如何通过单击按钮将tableview cells accessorytype重置为none?

时间:2011-11-06 18:23:17

标签: uitableview nsindexpath

我正在尝试编码重置按钮,这样当我点击该按钮时,所有tableview单元格的附件类型都设置为none

我对如何做到这一点有一个明确的概念,但我对iPhone开发还很陌生,所以我只需要帮助调用哪些方法。

我认为我需要采取的步骤:我使用for循环迭代所有行 - 所以我计算了单元格数量(成功完成)。我的问题是,如果附件类型是CheckMark并将其设置为none,我不知道如何检查每个行/单元格。

或者,我可以将所有单元格设置为AccessoryNone,但我已在内部进行了一些计算:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

所以我不确定如何实现这一目标。

2 个答案:

答案 0 :(得分:11)

无需先检查accessoryType的内容,只需将UITableViewCellAccessoryNone分配给所有人。这应该适用于你想要做的事情:

// replace clickedResetButton with your action handler method for that button
- (IBAction)clickedResetButton:(id)sender {
    for (int section = 0, sectionCount = self.tableView.numberOfSections; section < sectionCount; ++section) {
        for (int row = 0, rowCount = [self.tableView numberOfRowsInSection:section]; row < rowCount; ++row) {
            UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:section]];
            cell.accessoryType = UITableViewCellAccessoryNone;
            cell.accessoryView = nill;
        }
    }
}

答案 1 :(得分:0)

Swift 3.1

func resetAccessoryType(){
    for section in 0..<self.tableView.numberOfSections{
        for row in 0..<self.tableView.numberOfRows(inSection: section){
            let cell = self.tableView.cellForRow(at: IndexPath(row: row, section: section))
            cell?.accessoryType = .none
        }
    }
}