UITableView:如何获取特定部分的所有行?

时间:2014-06-24 19:23:26

标签: ios objective-c uitableview

我想要什么?
我想添加单选按钮功能,其中特定部分的用户只能选择一行

enter image description here

我是怎么做的?
我添加了UISwitch并根据用户点击的行我想要执行以下操作

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.section == 1 || indexPath.section == 2) {

      // disable all the rows of this section except indexPath.row          
    }
}

我被困在哪里?

如何获取UITableView中给定部分的所有行?

P.S:我已经一周到iOS学习了,如果这是一个愚蠢的问题,请耐心等待我

3 个答案:

答案 0 :(得分:12)

使用[tableView cellForRowAtIndexPath:(NSIndexPath *)]

for (int i = 0; i < [self.tableView numberOfRowsInSection:indexPath.section]; i++) {
    if (i != indexPath.row) {
        UITableViewCell* cell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:indexPath.section]];
        //Do your stuff
    }
}

答案 1 :(得分:4)

斯威夫特3:

let rowsCount = self.tableView.numberOfRows(inSection: indexPath.section)
    for i in 0..<rowsCount  {
        let cell = self.tableView.cellForRow(at: IndexPath(row: i, section: indexPath.section)) as! UITableViewCell
        // your custom code (deselecting)
    }

感谢@Soul Clinic提供帮助!

答案 2 :(得分:0)

这应该可以解决问题。

- (NSArray *)tableView:(UITableView *)tableView visibleCellsInSection:(NSInteger)section
{
    NSPredicate *visibleCellsInSectionPredicate = [NSPredicate predicateWithBlock:^BOOL(UITableViewCell *visibleCell, NSDictionary *bindings) {
        return [tableView indexPathForCell:visibleCell].section == section;
    }];
    return [tableView.visibleCells filteredArrayUsingPredicate:visibleCellsInSectionPredicate];
}

如果需要,可以将其放在UITableView类别中。