我有以下代码来计算表中所选行的数量(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方法。有没有更好的方法来计算所选行的数量?
感谢您的帮助。
答案 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];
}