我有两种方法:

- (void)tableView: (UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath
{
testNumber=indexPath.row;
    testNumber=testNumber+1;
    NSLog(@"Test number : %i",testNumber);
}


然后

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([[segue identifier] isEqualToString:@"testStart1"])
   {
    tViewController *tvc = [segue destinationViewController];
    tvc.testNumberTVC=testNumber;
   }
}


我还有一个segue,可以通过在我的UITableView中选择一行来触发。

我的问题是,当我选择一行时,prepareForSegue在didSelectRowAtIndexPath之前起作用,因此testNumber的新值不会被传输。

我只想在didSelectRowAtIndexPath完成或更好时实现prepareForSegue:
仅使用didSelectRowAtIndexPath方法传输testNumber的值,因此删除prepareForSegue方法。

我几乎没有看到有关将数据从UITableView传输到DetailView的主题,但是有了新的xCode 5,当出现错误消息时,我真的不知道这是因为解决方案过时还是真正的错误是我的原因码。

最佳答案

您可以在视图控制器之间创建序列,而不是从单元格选择中创建序列,并在情节提要中设置序列的标识符。然后,您可以执行以下操作:

- (void)tableView: (UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath
{
    testNumber=indexPath.row;
    testNumber=testNumber+1;
    NSLog(@"Test number : %i",testNumber);
    [self performSegueWithIdentifier:@"mySegueIdentifier" sender:self];
}


另一种选择是检查对此链接here的答案。基本上,您可以像这样在prepareForSegue中获取单元索引路径:

  UITableViewCell *cell = (UITableViewCell*)sender;
  NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

关于ios - didSelectRowAtIndexPath和prepareForSegue实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21321433/

10-13 04:41