【发布时间】:2014-05-01 18:17:36
【问题描述】:
这是我的 prepareForSegue:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqual:@"cameraToRollsSegue"]){
ALRollsTableViewController *rollsTableViewController = (ALRollsTableViewController *)[segue destinationViewController];
Camera *c = [self.fetchedResultsController objectAtIndexPath:[self.tableView indexPathForSelectedRow]];
NSLog(@"CAMERA FROM INSIDE PREPARE FOR SEQUE: %@", c);
rollsTableViewController.selectedCamera = c;
}
}
我通过 NSLog 验证相机不为空:
CAMERA FROM INSIDE PREPARE FOR SEQUE: <Camera: 0x8dc1400> (entity: Camera; id: 0x8dafba0 <x-coredata://A415F856-5F21-4F08-9CAB-4B2A023B55C3/Camera/p1> ;
ALRollsTableViewController viewDidLoad:
- (void)viewDidLoad
{
NSLog (@"ROLLS TABLE VIEW CONTROLLER : viewDidLoad!");
NSLog(@"(selected camera = %@", self.selectedCamera);
}
结果:
ROLLS TABLE VIEW CONTROLLER : viewDidLoad!
(selected camera = (null)
如果没有设置属性,我在这里可能做错了什么?
更新
在 matt 的帮助下,我确定我的 prepareForSeque 中的目标视图控制器的实例与实际的目标视图控制器不匹配:
rollsTableViewController FROM SEGUE: <ALRollViewController: 0x8d90bf0>
rollsTableViewController FROM viewDidLoad in rollsTableViewController: <ALRollsTableViewController: 0x8c5ab00>
我不知道为什么会出现这种情况或如何解决它。
【问题讨论】:
-
+1 表示良好的日志记录、恰当的问题
-
viewDidLoad可能为时过早。它可能被称为 beforeprepareForSeque!要测试这个想法,请登录viewDidAppear:并查看... -
谢谢马特 :) 知道我做错了什么吗?
-
还要确保
@property声明selectedCamera是strong! -
我不知道,因为我不知道您要做什么,为什么还要使用嵌入转场,故事板是如何设置的,以及您是如何导致转场的发生。
标签: ios objective-c ios7 uistoryboardsegue