iPhone - UITableViewCellAccessoryType

时间:2011-11-07 01:17:51

标签: iphone uitableview

嘿伙计
在加载时调用以下方法,它的作用是使所有单元格的accesoryType为CheckMark。

- (UITableViewCellAccessoryType)tableView:(UITableView *)tableViewaccessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath
{
返回UITableViewCellAccessoryCheckmark;
}

我想编写一个完全相同的IBAction,但只需点击一下按钮而不是加载。请帮忙!

谢谢:)

1 个答案:

答案 0 :(得分:0)

如果要在按下按钮时更改附件类型的单元格,则必须重新加载受影响的行。在表视图控制器类中创建一个实例变量来保存活动的附件类型,并在-tableView中检查它:cellForRowAtIndexPath:方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell;

    // ...

    [cell setAccessoryType:[self cellAccessoryType]];
    return cell;
}

然后,将按钮的“内部触摸”操作设置为以下内容:

- (IBAction)changeAccessories:(UIButton *)sender
{
    UITableViewCellAccessoryType accessoryType;

    if (/*condition*/) {
        accessoryType = UITableViewCellAccessoryTypeCheckmark;
    } else {
        accessoryType = UITableViewCellAccessoryTypeNone;
    }

    [self setCellAccessoryType:accessoryType];
    [[self tableView] reloadData];
}

但是,调用-reloadData是一种非常简单的做事方式。要获得更顺畅的解决方案,请查看-reloadRowsAtIndexPaths:withRowAnimation: