テーブルビューには、いくつかの異なるカスタム セルがあります。そのうちの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 メソッドの一部にすぎません。すべての助けをありがとう。たくさんの回答を見てビックリ!ありがとう。