我的解决方案是使用将 Xcode 7.1.1 用于通用应用程序,使用情节提要、自动布局和大小类,为 iOS 9 构建...
我在当前/原始(不是替换/新/第二个)详细视图控制器的方法中使用了Midhun MP的答案版本:viewDidLoad
显然首先为您的控制器导入正确的头文件:
#import "NEW_DetailViewController.h"
然后在viewDidLoad
方法内:
- (void)viewDidLoad {
[super viewDidLoad];
<<OTHER_CODE>>
if (<<INSERT_THE_LOGIC_YOU_NEED_TO_TRIGGER_THE_REPLACEMENT_DETAIL_VC>>) {
NEW_DetailViewController *viewNewDetailVC = [[NEW_DetailViewController alloc] initWithNibName:@"NEW_DetailViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] init];
[navController pushViewController:viewNewDetailVC animated:YES];
NSArray *arraySplitViewControllers = [[NSArray alloc] initWithObjects:[self.splitViewController.viewControllers objectAtIndex:0],navController,nil];
self.splitViewController.viewControllers = arraySplitViewControllers;
}
}
注意我可以在不加载 XIB 文件的情况下使此代码工作,在代码中构建整个替换细节 VC,[[UIViewController alloc] init]
而不是[[NEW_DetailViewController alloc] initWithNibName:@"NEW_DetailViewController" bundle:nil]
,但对我无法加载 XIB 文件感到沮丧,所以我坚持...
我尝试了许多不同 SO 答案的多种变体,试图解决成功加载 XIB 文件作为拆分视图控制器中的替换细节视图控制器的问题。
最后,特拉维斯 M的这个回答给了我我需要的提示......
删除您迄今为止为创建新的 XIB 文件和UIViewController
!
创建一个新文件并使其成为 UIViewController 的子类。看截图:
重要的是确保您选中“同时创建 XIB 文件”复选框。
您不需要修改 的新子类UIViewController
,除非您想对视图的内容进行编码。我只需要UILabel
为我的解决方案添加一个,我使用 Interface Builder 完成了这个。
NEW_DetailViewController
确保按照我上面的示例在代码中引用替换视图控制器。
而已!
在您的 XIB 文件中,您应该最终得到以下内容: