1

私のcellForRowAtIndexPath:方法では、次のコードがあります。

        UIButton *signOutButton = [[UIButton alloc] init];

        [signOutButton addTarget:self action:@selector(logoutButtonTapped) forControlEvents:UIControlEventTouchUpInside];
        signOutButton.translatesAutoresizingMaskIntoConstraints = NO;
        signOutButton.titleLabel.textColor = [UIColor colorWithRed:0/255.0 green:180/255.0 blue:35/255.0 alpha:1.0];
        signOutButton.titleLabel.text = @"Sign Out";

        [cell.contentView addSubview:signOutButton];

        [cell.contentView addConstraint:[NSLayoutConstraint constraintWithItem:signOutButton
                                                                     attribute:NSLayoutAttributeLeading
                                                                     relatedBy:NSLayoutRelationEqual
                                                                        toItem:cell.contentView
                                                                     attribute:NSLayoutAttributeLeft
                                                                    multiplier:1.0
                                                                      constant:50.0]];

        [cell.contentView addConstraint:[NSLayoutConstraint constraintWithItem:signOutButton
                                                                     attribute:NSLayoutAttributeTrailing
                                                                     relatedBy:NSLayoutRelationEqual
                                                                        toItem:cell.contentView
                                                                     attribute:NSLayoutAttributeRight
                                                                    multiplier:1.0
                                                                      constant:50.0]];

        [cell.contentView addConstraint:[NSLayoutConstraint constraintWithItem:signOutButton
                                                                     attribute:NSLayoutAttributeBottom
                                                                     relatedBy:NSLayoutRelationEqual
                                                                        toItem:cell.contentView
                                                                     attribute:NSLayoutAttributeBottom
                                                                    multiplier:1.0
                                                                      constant:-6.0]];

しかし、セルをロードしても表示されません。私は自動レイアウトに慣れていないので、誰かが私が間違っていることを理解できますか?

奇妙なことに、ボタンがあるはずの領域をタップすると、メソッドが実行されます。

4

2 に答える 2

1

ラベルのタイトルが設定されていないため、ボタンが追加されているため、表示されていません。背景色を変更して、セル内のどこにあるかを次のように確認できます。

[signOutButton setBackgroundColor:[UIColor blueColor]];

次に、タイトルと色を次のように変更します。

[signOutButton setTitle:@"Sign Out" forState:UIControlStateNormal];
[signOutButton setTitleColor:[UIColor colorWithRed:0/255.0 green:180/255.0 blue:35/255.0 alpha:1.0] forState:UIControlStateNormal];

最終的なコードは次のようになります。

    UIButton *signOutButton = [[UIButton alloc] init];

[signOutButton addTarget:self action:@selector(logoutButtonTapped) forControlEvents:UIControlEventTouchUpInside];
signOutButton.translatesAutoresizingMaskIntoConstraints = NO;
[signOutButton setTitle:@"Sign Out" forState:UIControlStateNormal];
[signOutButton setTitleColor:[UIColor colorWithRed:0/255.0 green:180/255.0 blue:35/255.0 alpha:1.0] forState:UIControlStateNormal];
[signOutButton setBackgroundColor:[UIColor blueColor]]; //just for testing, you can get rid of this line

[cell.contentView addSubview:signOutButton];

[cell.contentView addConstraint:[NSLayoutConstraint constraintWithItem:signOutButton
                                                             attribute:NSLayoutAttributeLeading
                                                             relatedBy:NSLayoutRelationEqual
                                                                toItem:cell.contentView
                                                             attribute:NSLayoutAttributeLeft
                                                            multiplier:1.0
                                                              constant:50.0]];

[cell.contentView addConstraint:[NSLayoutConstraint constraintWithItem:signOutButton
                                                             attribute:NSLayoutAttributeTrailing
                                                             relatedBy:NSLayoutRelationEqual
                                                                toItem:cell.contentView
                                                             attribute:NSLayoutAttributeRight
                                                            multiplier:1.0
                                                              constant:50.0]];

[cell.contentView addConstraint:[NSLayoutConstraint constraintWithItem:signOutButton
                                                             attribute:NSLayoutAttributeBottom
                                                             relatedBy:NSLayoutRelationEqual
                                                                toItem:cell.contentView
                                                             attribute:NSLayoutAttributeBottom
                                                            multiplier:1.0
                                                              constant:-6.0]];
于 2013-10-24T14:53:24.897 に答える