我有一个 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);
}
所以发生的事情是,子视图成为新的视图控制器,但标签没有改变 - 但是,这两个日志命令被执行。标签是使用 IB 合成和连接的,如果我将子视图推送为新的视图控制器而不是替换它,则该标签可以工作。