0

我在情节提要中有一个 tableviewcell 设置为 Custom 的 tableview。我在每个单元格的更右侧有 1 个按钮(单元格中的按钮)。

加载每个单元格时,根据条件,此按钮应该显示或隐藏。但它没有按预期工作。当我向下滚动并再次向上滚动时,以前隐藏(条件正确)的按钮现在正在显示。

我对单元格中的图像执行相同的操作,即使在滚动时也可以正确加载图像。

这是我的代码

- (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;
}
4

1 回答 1

0

我已经设法使用这种方法解决了我自己的问题:http ://www.techotopia.com/index.php/Using_Xcode_Storyboards_to_Build_Dynamic_TableViews_with_Prototype_Table_View_Cells 。显然,我没有从所有的阅读/谷歌搜索中尝试足够的努力(我猜太累了)。所以我决定尝试根据提到的参考对我的单元格进行子类化。有用!(解决方案发布在我的原始帖子中)。

于 2013-01-19T03:43:15.437 回答