通过prepareForSegue问题发送一些数据

时间:2013-06-02 20:50:25

标签: ios objective-c uitableview uistoryboardsegue

在将带有一些数据的segue带到另一个视图时,我遇到了一些问题。

我有一本联系簿,第一个tableview正确显示联系人,也有图像 当我点击联系人时,它应该执行segue到另一个tableView。但由于某种原因,它只需要第一次接触(似乎它不在循环中)。

我有一个联系人类和第二个ViewController。我无法理解为什么会发生

我创建了“pastie”链接:

Here is the link to My code, to save place

2 个答案:

答案 0 :(得分:2)

我检查了您的代码,我认为问题出在调用prepareForSegue时,已从didSelectRowAtIndexPath取消选择所选行。我认为这里最好的方法是将选择的索引路径从didSelectRowAtIndexPath发送到performSegue方法,如:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        [self.contTableView deselectRowAtIndexPath:indexPath animated:YES];
        [self performSegueWithIdentifier:@"NextTable" sender:indexPath];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
      if ([[segue identifier] isEqualToString:@"NextTable"]) {
        NSIndexPath *indexPath = (NSIndexPath*)sender
        contact = self.contactsToShow[indexPath.row];
        [segue.destinationViewController setPhoneNumbers:contact.numbers];
    }
}

为了使这种方法起作用,你必须链接视图控制器之间的segue,而不是在单元和表视图控制器之间。

答案 1 :(得分:1)

问题是第196行:您想拥有所选行的索引路径。但是因为在第215行中,您在选择后立即取消选择单元格,索引路径始终为0。