我有两种方法:
- (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/