0

テーブルビューには、いくつかの異なるカスタム セルがあります。そのうちの1つには、ボタンがあります。このボタンは、別のビュー コントローラーを表示します。ただし、テーブルビューが完全に読み込まれるまでは必要ありません。cellForRowAtIndexPath では、さまざまなカスタム セルをすべて設定しました。[buttonCell.myButton setHidden:YES]; のコメントを外すことができます。そしてそれは私のボタンを隠します。下記参照。

else if (indexPath.section == 3)
{
    ButtonCell *buttonCell = [tableView dequeueReusableCellWithIdentifier:@"ButtonCell"];

    //[buttonCell.myButton setHidden:YES];
    cell = buttonCell;
}
    return cell;

ただし、テーブルビューが読み込まれた後、ボタンを再表示したいと思います。reloadData を呼び出す別のメソッドで、すべての配列の読み込みを終了します。その方法では、これを行うことでボタンを非表示にしようとしました..

[ButtonCell.myButton setHidden:NO];

しかし、コンパイラは、プロパティ myButton が ButtonCell に見つからないという警告を表示します。ボタンの非表示を解除する方法を知っている人はいますか? 私は何を間違っているのか、何が得られないのか! ご助力いただきありがとうございます。

編集1

私のボタンセルクラスは... .h #import

@interface ButtonCell : UITableViewCell

@property (strong, nonatomic) IBOutlet UIButton *myButton;
- (IBAction)YDI:(id)sender;


@end

.m

#import "ButtonCell.h"
#import "AnotherWebViewController.h"

@implementation ButtonCell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
    // Initialization code
}
return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];

// Configure the view for the selected state
}

- (IBAction)YDI:(id)sender
{

}

@end

編集2

回答してくれた皆さんの助けを借りて (ありがとうございました) もう少し進みましたが、ボタン自体が表示されません。そのため、cellForRowAtIndexPath でボタンを非表示にしていますが、これは正常に機能します。次に、データをリロードする方法で、次のコードを挿入します。

NSIndexPath *index = [NSIndexPath indexPathForRow:0 inSection:3];
ButtonCell *buttonCell = (ButtonCell *) [self.tableView cellForRowAtIndexPath:index];
[buttonCell.myButton setHidden:NO];

ボタンを含む ButtonCell は常に 4 番目のセクション (最初のセクションを 0 として数えます) であり、行は 1 つだけです。他の助けをいただければ幸いです。もうすぐそこ!

編集3 わかりました!しかし、それを理解できたのはコメントのおかげでした。@A-Liveに感謝します。ElJay のおかげで cellForRowAtIndexPath 以外のメソッドでセルを取得する方法は知っていますが。それで、私は何か新しいことを学んだので、彼に小切手を与えています。それが、とにかく質問を投稿する理由です. したがって、メソッド cellForRowAtIndexPath 内で、ボタンを非表示/表示します。私は自分のアプリに finished という BOOL を持っています。もともとは true に設定されています。テーブル ビューの読み込みが終了すると、false に設定されます。したがって、このブール値を使用してボタンを表示/非表示にしました。

else if (indexPath.section == 3)
{
    ButtonCell *buttonCell = [tableView dequeueReusableCellWithIdentifier:@"ButtonCell"];

    if (!_finished)
    {
        [buttonCell.myButton setHidden:YES];
    }else{
        [buttonCell.myButton setHidden:NO];
    }

    cell = buttonCell;
}
    return cell;

繰り返しますが、これは cellForRowAtIndexPath メソッドの一部にすぎません。すべての助けをありがとう。たくさんの回答を見てビックリ!ありがとう。

4

5 に答える 5

1

myButtonセルに属します。そのインスタンスを取得する必要があり、それを再表示できます。これは、またはUITableViewCellの外側でセルのオブジェクトを変更することを前提としています。cellForRowAtIndexPsthwillDisplayCell

于 2013-06-12T15:26:09.687 に答える
1

ButtonCell のヘッダー ファイルに、そのプロパティのパブリック アクセサーがありますか? これは、通常、このような@property (nonatomic, retain) UIButton *myButton;
コンパイラ警告が表示される方法です。

于 2013-06-12T15:36:55.537 に答える
1

あなたのコードで

[ButtonCell.myButton setHidden:NO];

オブジェクト名の代わりにオブジェクト クラス名を使用しようとしています。ボタンを含むセルを取得する必要があります

buttonCell = [tableView cellForRowAtIndexPath:indexPath];
buttonCell.myButton.hidden = NO;
于 2013-06-12T15:28:56.420 に答える