-1

我有一个 UITableview,在那个 TableView 中我填充了 json 数据。我已经实现了一个多选的表格视图代码,它用复选标记检查触摸的表格单元格。

我的问题是如何知道我选择了哪些表格视图单元格以及如何对选定的表格视图单元格执行操作?

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.json2.count;
}

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CellIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] ;
}

cell.textLabel.text = self.json2[indexPath.row][@"SurveyName"];

//cell.detailTextLabel.text = self.json1[indexPath.row][@"AssetDesc"];

// Sets the accessory for the cell
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

return cell;

}

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

UITableViewCell *thisCell = [tableView cellForRowAtIndexPath:indexPath];


if (thisCell.accessoryType == UITableViewCellAccessoryNone) {
    thisCell.accessoryType = UITableViewCellAccessoryCheckmark;

}else{
    thisCell.accessoryType = UITableViewCellAccessoryNone;

}
}

- (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath {

//add your own code to set the cell accesory type.
return UITableViewCellAccessoryNone;
}

所以通常如果我要从 tableview 单元格中进行 segue,我会执行以下操作:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Perform segue
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[self performSegueWithIdentifier: @"showSurveyForm" sender:self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showSurveyForm"]) {
    // NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    CameraViewController *destViewController = segue.destinationViewController;

    // Hide bottom tab bar in the detail view
    destViewController.hidesBottomBarWhenPushed = YES;
    destViewController.surveyQuestionId = self.surveyQuestionIDParsed;
    destViewController.jsonTitleforSurvey = self.json2;
    destViewController.surveyTitleAssetId = self.assetSurvey;

    NSLog(@"Survey ID for Survey: %@", self.surveyQuestionIDParsed);
    NSLog(@"Survey name titile: %@", self.json2 );
    NSLog(@"Asset ID for Title: %@", self.assetSurvey);

}

else if ([segue.identifier isEqualToString:@"showCameraRoll"]) {
    // NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

    // Hide bottom tab bar in the detail view
}

else if ([segue.identifier isEqualToString:@"showJsonData"]) {
    // NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

}

else if ([segue.identifier isEqualToString:@"testPickerDemo"]) {
    // NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

}
}

在我的 UItableview 中选择多选单元格后,我想进行 segue。

例如,我进行了选择并检查了 2 行。我想在我的 nslog 中捕获或查看选择了哪些 tableview 单元格,以便我可以根据选择的行进行另一个 json 调用和 segue。

我知道如何调用和解析 json 并进行 segue。

在此处输入图像描述

4

1 回答 1

3

你可以-didSelectRowAtIndexPath像这样修改你的东西:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    {
        UITableViewCell *thisCell = [tableView cellForRowAtIndexPath:indexPath];
        NSString *selStr = [yourSourceArray objectAtIndex:indexPath.row];
--->        NSMutableArray *selArray = [[NSMutableArray alloc] init];    //Write this line in viewDidLoad method.
        if (thisCell.accessoryType == UITableViewCellAccessoryNone) 
        {
            thisCell.accessoryType = UITableViewCellAccessoryCheckmark;
            [selArray addObject:selStr];
        }
        else
        {
            thisCell.accessoryType = UITableViewCellAccessoryNone;
            [selArray removeObject:selStr];
        }
        NSLog(@"selArray :: %@",selArray);
    }

更新 :

它将为您提供 TextLabel 的 Selected Rows 文本数组。然后你可以在-yourButtonPressed方法中使用它

- (IBAction)yourButtonPressed:(id)sender;
{
    NSLog(@"selArray :: %@",selArray);
}

祝你好运 !!!

于 2013-05-27T09:40:41.037 回答