我有tableViewController
类,想要将属性传递给另一个视图控制器。
我宣布了我的财产,
@property (strong, nonatomic) NSIndexPath *selection;
在协议tableView:didSelectRowAtIndexPath:
中,我想将selection
值设置为indexPath
所选。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
// change your selection property
[self setSelection:indexPath];
}
我想通过selection
prepareForSegue:sender:
传递到目标视图控制器
if ([segue.identifier isEqualToString:@"updateItem"]) {
UINavigationController *navController = (UINavigationController *)[segue destinationViewController];
UpdateViewController *viewController = (UpdateViewController *)[navController topViewController];
[viewController setManagedObjectContext:self.managedObjectContext];
NSManagedObject *record = [self.fetchResultsController objectAtIndexPath:self.selection];
if (self.selection) {
[viewController setRecord:record];
}
// reset selection
[self setSelection:nil];
}
我的问题是,我在目标视图控制器上对该属性进行了NSlog,并且它第一次显示为null。其次,它显示为第一个设置,依此类推等。它展示了我之前设定的内容。
所以我错过了在进入另一个视图控制器目标之前设置属性的概念吗?请让我知道这一点。任何帮助,将不胜感激。非常感谢你。
答案 0 :(得分:0)
我终于找到了答案。我搞砸了如何触发segue。 prepareForSegue
在didSelectRowAtIndexPath
之前先运行prepareForSegue
。
请参阅this我们应该使用didSelectRowAtIndexPath
或selection
。因此,我决定将prepareForSegue
设置为indexPathForSelectedRow
以获取其[self setSelection:[[self tableView] indexPathForSelectedRow]
。
embed,iframe,object,video{
height:auto !important
}