我开始使用Master-Detail应用程序,然后转到 iPhone storyboard
,选择NavigationController
并转到编辑器> 嵌入> TabBarController
它运作得很好。当我尝试在 iPad中执行相同操作 storyboard
时,嵌入TabBarController
菜单项已被禁用。我应该手动完成吗?
答案 0 :(得分:6)
在app delegate中,替换对splitViewController的引用,如下所示。
let tabBarViewController = self.window!.rootViewController as! UITabBarController
print(tabBarViewController.viewControllers?.count)
var splitViewController:UISplitViewController? = nil
for viewController in tabBarViewController.viewControllers! {
if viewController.title == "Master" {
splitViewController = viewController as? UISplitViewController
}
}
let navigationController = splitViewController!.viewControllers[splitViewController!.viewControllers.count-1] as! UINavigationController
navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController!.displayModeButtonItem()
splitViewController!.delegate = self
答案 1 :(得分:1)
拆分视图控制器无法嵌入到任何内容中 - 它必须是故事板中的根视图控制器。
但是,您可以选择主视图控制器或详细视图控制器,并将这些类嵌入到其他视图控制器中。
答案 2 :(得分:1)
在我的应用程序中,我以编程方式嵌入,如下所示
UISplitViewController *split=[[UISplitViewController alloc]init];
PatientListController *patListContr=[[PatientListController alloc]init];
PatientController *patientControl=[[PatientController alloc]init];
split.viewControllers=@[patListContr,patientControl];
split.tabBarItem=[[UITabBarItem alloc]initWithTitle:@"" image:[UIImage imageNamed:@"patient.png"] selectedImage:nil];
然后将上面的拆分视图控制器嵌入到TabbarController
中UITabBarController *tabbarContr=[[UITabBarController alloc]init];
tabbarContr.viewControllers=@[split,yourController1,yourController2];
答案 3 :(得分:0)
基于Rob George's Swift answer,这是Objective-C代码:
UITabBarController *tabBarViewController= (UITabBarController *) self.window.rootViewController;
NSLog(@"%lu",tabBarViewController.viewControllers.count);
UISplitViewController *splitViewController = (UISplitViewController *)nil;
for(UIViewController *viewController in tabBarViewController.viewControllers){
if([viewController.title isEqualToString:@"Master"]){
splitViewController= (UISplitViewController *) viewController;
}
}
UINavigationController *navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1];
navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
splitViewController.delegate = self;
我花了一段时间,因为"第一" ViewController是白色的,带有条形图(没有图标和白色文字)几乎完全是白色的,我认为应用程序只是默认显示什么,但实际上它是选择空的ViewController而我根本没看到酒吧。万一你想知道它为什么不起作用lol