我有一个tableview,其中tableviewcell在Storyboard中设置为Custom。我在每个单元格的右下方有一个按钮(单元格中的按钮)。
加载每个单元格时,根据条件,该按钮应显示或隐藏。但它没有按预期工作。当我向下滚动并再次向上滚动时,之前隐藏(具有正确条件)的按钮现在正在显示。
我对单元格中的图像执行相同操作,即使在滚动时也正确加载图像。
这是我的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"cell1";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIButton *btnCall = (UIButton *) [cell viewWithTag:5];
UIImageView *imgIcon = (UIImageView *) [cell viewWithTag:6];
[btnCall setHidden:TRUE];
if (... some condition ...) {
[btnCall setHidden:false];
[imgIcon setImage:[UIImage imageNamed:@"icon1.png"]]; // load correctly
} else {
[btnCall setHidden:true]; // doesn't seem to work consistently.
[imgIcon setImage:[UIImage imageNamed:@"icon2.png"]]; // load correctly
}
return cell;
}
在我的故事板中,原型单元格中的此按钮也设置为隐藏。
我已经阅读了很多关于这个问题的问题和答案。
我还有其他东西,比如每个单元格中的图像。即使向上/向下滚动,图像也能正确加载。
有人可以帮忙吗?非常感谢!
****编辑1 - 问题已解决! ****
我将我的单元格子类化,以便我的重置更合适。这是它的完成方式(我用图像替换上面的按钮 - 保持它作为按钮应该也可以正常工作):
@implementation PSCellMyTableViewCell
@synthesize imgView1 = _imgView1, imgView2 = _imgView2;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
self.imgView1.image = nil;
self.imgView2.image = nil;
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
cellForRowAtIndexPath的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"cell1";
PSCellMyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (... some condition ...) {
[cell.imgView1 setImage:[UIImage imageNamed:@"icon-1.png"]];// no longer using tag
[cell.imgView2 setImage:[UIImage imageNamed:@"icon-12.png"]]; // no longer using tag
} else {
[cell.imgView1 setImage:[UIImage imageNamed:@"icon-2.png"]];// no tag
[cell.imgView2 setImage:[UIImage imageNamed:@"icon-22.png"]]; // no tag
}
return cell;
}
答案 0 :(得分:0)
我设法使用这种方法解决了我自己的问题:http://www.techotopia.com/index.php/Using_Xcode_Storyboards_to_Build_Dynamic_TableViews_with_Prototype_Table_View_Cells。显然,我没有在所有的阅读/谷歌搜索中努力(我猜太累了)。所以我决定尝试根据上面提到的引用对我的单元格进行子类化。有用! (解决方案发布在我原来的帖子中)。