Objective-C prepareForSegue问题

时间:2015-05-19 15:27:50

标签: ios objective-c uitableview segue

我在我的UISplitViewController使用prepareForSegue,并且NSMutableDictionary填充UITableView部分。我想要做的是将所选部分中所选值的值传递给我detailViewController中的方法,这是我到目前为止所得到的:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

        if ([[segue identifier] isEqualToString:@"showDetail"]) {

            NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
            NSString *strPOIndex = [self.tableData[indexPath.row] valueForKey:@"Vendor"];



            LHContactsDetail *controller = (LHContactsDetail *)[[segue destinationViewController] topViewController];

            [controller setDetailItem:strPOIndex];
            controller.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem;
            controller.navigationItem.leftItemsSupplementBackButton = YES;
        }

    }

但问题是,它返回第一部分的编号项。例如,如果我单击第2部分第1项,它将返回第1部分第1项,如果我单击第3部分第2项,它将返回第1部分第2项。我希望这是有道理的。这就是我填充桌面视图的方式:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    NSString *sectionTitle = [contactSectionTitles objectAtIndex:indexPath.section];
    NSArray *sectionContacts = [contactDirectoryFinal objectForKey:sectionTitle];
    NSString *contacts = [[sectionContacts objectAtIndex:indexPath.row] valueForKey:@"Vendor_Name"];

    cell.textLabel.text = contacts;

    return cell;

}

如何获取要发送到detailController方法的正确值?

1 个答案:

答案 0 :(得分:1)

我想知道为什么你的数据源在cellforrow中有所不同并为segue做准备。 如果您以与节和行相同的方式进行管理。 您需要首先通过indexpath.section从数据源获取数据,然后使用indexpath.row在prepareforsegue方法中更改此数据。