在我的表格视图中,我有几个不同的自定义单元格。在其中一个中,它有一个按钮。这个按钮会弹出另一个视图控制器。但是,在 tableview 完全加载之前不需要它。在 cellForRowAtIndexPath 中,我设置了所有不同的自定义单元格。我可以取消注释 [buttonCell.myButton setHidden:YES]; 它会隐藏我的按钮。见下文。
else if (indexPath.section == 3)
{
ButtonCell *buttonCell = [tableView dequeueReusableCellWithIdentifier:@"ButtonCell"];
//[buttonCell.myButton setHidden:YES];
cell = buttonCell;
}
return cell;
但是,我想在 tableview 加载后取消隐藏按钮。我在另一个调用 reloadData 的方法中完成了所有数组的加载。在那种方法中,我试图通过这样做来取消隐藏按钮..
[ButtonCell.myButton setHidden:NO];
但是编译器警告我在 ButtonCell 中找不到属性 myButton。有谁知道如何取消隐藏我的按钮。我做错了什么,我没有得到什么!感谢你的帮助。
编辑 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 始终是第四部分(将第一部分计为 0)并且它只有一行。任何其他帮助将不胜感激。差不多好了!
编辑 3 明白了!但是,由于有评论,我才能够弄清楚。感谢@A-Live。尽管感谢 ElJay,我确实知道如何在 cellForRowAtIndexPath 之外的方法中获取单元格。所以我给他支票,因为我学到了一些新东西,这就是我们发布问题的原因。所以在我的方法 cellForRowAtIndexPath 里面是我隐藏/显示按钮的地方。我的应用程序中有一个 BOOL,称为完成,它最初设置为 true。当表格视图结束加载时,它被设置为 false。所以我只是用这个 bool 来显示/隐藏按钮。
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 方法的一部分。再次感谢所有的帮助。看到这么多答案我很惊讶!谢谢。