我有一个iPad主 - 细节,其中主要细节控制器是导航控制器,并且根据所选的表格行(在主视图控制器中),我可能会或可能不会替换由细节导航控制器管理的视图控制器。
这似乎工作正常,只是在进行此移动时我无法访问新的详细信息视图控制器的IBOutlets。
这是我切换导航控制器的视图控制器:
CustomerDetailViewController *subview = [[CustomerDetailViewController alloc] initWithNibName:@"CustomerDetailViewController" bundle:nil];
[subview setTitle:@"Testing"];
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
app.splitViewController.delegate = subview;
[app.detailNavigationController setViewControllers:[NSArray arrayWithObjects:subview, nil]];
[subview setData:[custData objectForKey:@"name"]];
custData是一个包含我的视图信息的NSDictionary。这是setData命令:
- (void)setData:(NSDictionary *)cust {
NSLog(@"%@\n", [cust valueForKey:@"name"]);
self.nameLabel.text = [cust valueForKey:@"name"];
NSLog(@"%@\n", self.nameLabel.text);
}
所以会发生什么,subview成为新的视图控制器,但标签不会被更改 - 但是,这两个日志命令被执行。标签是使用IB合成和连接的,如果我将子视图作为新的视图控制器而不是替换它,则可以正常工作。
答案 0 :(得分:1)
我会说,视图尚未初始化。首先在viewDidLoad
方法中连接出口。尝试在viewDidLoad
中添加一个日志语句来查找,首先调用哪一个。
如果在viewDidLoad
方法之后调用setData
,则只能设置CustomerDetailViewController
的局部变量,然后由viewDidLoad
读取,并相应地设置标签