计算UITableView上选定行的数量

时间:2013-03-11 23:12:45

标签: ios uitableview

我有以下代码来计算表中所选行的数量(tableview1)。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
    }
    int count = 0;
    selectedindex1 = indexPath.row;
    for (NSIndexPath *indexPath in tableview1.indexPathsForSelectedRows) {
        count = count + 1;
    }
    rowcount = count;
}

其中selectedindex1和rowcount是整数变量。

只要您假设用户不会选择已经选择的行,此代码就会起作用。如果这样做,则应用程序无法分辨所选行的正确数量,因为此类操作不会触发didSelectRowAtIndexPath方法。有没有更好的方法来计算所选行的数量?

感谢您的帮助。

3 个答案:

答案 0 :(得分:6)

我认为这很简单:

[[tableView indexPathsForSelectedRows] count]

然后,这正是你的代码所做的:

int count = 0;
for (NSIndexPath *indexPath in tableview1.indexPathsForSelectedRows) {
    count = count + 1;
}
rowcount = count;

你想要发生什么事?

答案 1 :(得分:3)

也许只保留一个正在运行的indexPath的数组。这样,你就不必担心选择同一个数组了两次。

- 在viewDidLoad中初始化数组

  NSMutableArray *yourSelectedRowsArray = [[NSMutableArray alloc]init]; 

- 然后在didSelectRowAtIndexPath中......执行以下操作:

if(![yourSelectedRowsArray containsObject:indexPath])
{
    [yourSelectedRowsArray addObject:indexPath];
}

NSLog(@"the number of selected rows is %d",yourSelectedRowsArray.count);

- 并在didDeselectRowAtIndexPath中执行类似:

if([yourSelectedRowsArray containsObject:indexPath])
    {
        [yourSelectedRowsArray removeObject:indexPath];
    }

NSLog(@"the number of selected rows now is %d",yourSelectedRowsArray.count);

然后只需访问您想要使用它的数组的数量,就可以获得所选行的数量。

答案 2 :(得分:3)

好。它就像以下一样简单。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    rowcount =  [[tableView indexPathsForSelectedRows] count];
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    rowcount =  [[tableView indexPathsForSelectedRows] count];
}