【发布时间】:2016-05-22 05:57:44
【问题描述】:
我有 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];
}
我想通过 prepareForSegue:sender: 将 selection 传递给目标视图控制器
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-ing,并且第一次显示为 null。其次,它显示为第一个,依此类推。它显示了我之前设置的内容。
那么我是否错过了在属性进入另一个视图控制器目标之前设置属性的概念?请让我知道这一点。任何帮助,将不胜感激。非常感谢。
【问题讨论】:
-
你在哪里分配'selection'
-
我没有分配“选择”。只需在我的私有接口中将其声明为属性,然后在我的 didSelectAtIndex 协议中进行设置。
-
@RohitKP 我应该分配初始化“选择”吗?
-
你能显示日志代码吗?
-
在 viewDidLoad 的目标控制器中 > NSLog(@"Content: %@", [self.record valueForKey:@"name"]); @MaximSysenko
标签: ios objective-c uitableview segue