1

在本教程的帮助下。. . .

我制作了一个 UITableViewController(作为参考,我可以称之为 MainTableVC),它的每个部分都有单行,并且我将这个 UITableViewController(MainTableVC) 的每个单元格都设为 UITableView(作为参考,我可以称之为 UITableViewOfMainTableVCell),其中包含许多单元格。

现在我旋转了 UITableViewOfMainTableVCell 的单元格/行 {* 它是 UITableView 而不是 UITableViewCell },这样我就可以水平滚动 UITableViewOfMainTableVCell 的单元格。

现在我的用户界面看起来像这样,我有一个有 10 个部分的表格(比如说),每个部分都有一个行/单元格,在这个行/单元格中我有几行/单元格可以水平滚动

我还在 UITableViewOfMainTableVCell 的自定义单元格中启用了 allowMultipleSelections

现在I wanted to keep track of selected indexes of selected rows ,我使用 UITableViewOfManiTableVCcells 的委托方法获取了一个 NSArray 并在其中保存了 indexPaths

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableArray *selectedIndexesOfOneRow = [NSMutableArray arrayWithArray:[tableView indexPathsForSelectedRows]];
NSLog(@"number of selected Indexes = %d",[selectedIndexesOfOneRow count]);
}

-(void)tableView:(UITableView *)tableView didDeSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableArray *selectedIndexesOfOneRow= [NSMutableArray arrayWithArray:[tableView indexPathsForSelectedRows]];
NSLog(@"number of selected Indexes = %d",[selectedIndexesOfOneRow count]);
}

我的问题:-

假设如果我在 MainTableVC 的一行/单元格中选择 4 个单元格/行,则 NSMutableArray *selectedIndexesOfOneRow 具有正确的计数,但是如果我在 MainTableVC 的另一部分中选择另一行的单元格,即使保持先前的单元格被选中,计数从头开始

问题在于 indexPathsForSelectedRows,它只跟踪单个 UITableView 的选定行,因为我为 MainTableVC 的每个部分的每一行都有单独的 UITableViews NSMutableArray 在从不同行选择单元格时总是被重置

我的问题

由于每个 Row/Cell 调用相同的 UITableView 委托方法,我将如何防止它,我想将所有选定的单元格索引存储在整个 UI 中

我可以制作一个数组数组来存储不同索引的索引,但是我将如何以不同的方式获得这些索引

“提示”我可以在我的 MainTableVC 中做这样的事情,因为我在 MainTableVC 的 Cell 中有一个 tableView,我可以放置一个 NSArray *array = [cell.tableView indexPathsOfSelectedIndex],但我应该在 MainTableVC 的哪个委托方法中放置这个,而且我也检查过,由于我没有选择任何整行 MainTableVC(UITableViewController),它的委托方法 didSelectRowAtIndexPath 和 didDeSelectRowAtIndexPath 永远不会被调用

4

2 回答 2

1

您可以为您的 tableView 分配标签,然后检查标签以区分所有 tableView。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView.tag==1) {
        //Do what ever you want with table having tab =1
    }else if (tableView.tag==2) {
        //Do what ever you want with table having tag =2
    }
}
于 2013-10-15T09:58:43.707 回答
-1
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
 // NSLog(@"user selected %@",[dataArray objectAtIndex:indexPath.row]);
NSString *listOfFacebookIDs = @"";
NSArray *indexPathArray = [self.mTableView indexPathsForSelectedRows];
for(NSIndexPath *index in indexPathArray){
    //Assuming that 'idFriends' is an array you've made containing the id's (and in the same order as your tableview)
    //Otherwise embed the ID as a property of a custom tableViewCell and access directly from the cell
    //Also assuming you only have one section inside your tableview
    NSString *fbID = [dataArray objectAtIndex:index.row];
    if([indexPathArray lastObject]!=index){
        listOfFacebookIDs = [listOfFacebookIDs stringByAppendingString:[fbID stringByAppendingString:@", "]];
    }else{
        listOfFacebookIDs = [listOfFacebookIDs stringByAppendingString:fbID];
    }
}
  NSLog(@"Your comma separated string is %@",listOfFacebookIDs);
}


- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"user de-selected %@",[dataArray objectAtIndex:indexPath.row]);
}

在此处输入图像描述

于 2016-04-19T07:32:16.127 回答