我通常创建没有IB东西的项目.我做的第一件事是剥离所有对xibs,outlet更新plist等的引用.没问题,效果很好(在我的世界里)!
现在,我刚刚安装了3.2并试图开发我的第一个iPad应用程序.按照与以前相同的步骤,我创建了一个基于UISplitView的应用程序项目,并剥离了所有IB的东西.另外,我也跟着苹果的参考文档部分:创建拆分视图控制器编程,但尽管如此,主视图从未显示,仅细节视图是(不管方向是什么).我真的试图仔细看看,但我无法理解我错过了什么.
是否有一个UISplitViewController的工作示例没有在某处漂浮的笔尖?我用谷歌搜索但找不到任何东西.或者你知道我可能错过了什么吗?
在你的委托标题中声明你的splitviewcontroller,在你的didfinishlaunching中使用这样的东西
确保将UISplitViewControllerDelegate添加到detailedViewController头文件,并且您还拥有委托方法.记得导入相关的头文件
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { splitViewController = [[UISplitViewController alloc] init]; rootViewController *root = [[rootViewController alloc] init]; detailedViewController *detail = [[detailedViewController alloc] init]; UINavigationController *rootNav = [[UINavigationController alloc] initWithRootViewController:root]; UINavigationController *detailNav = [[UINavigationController alloc] initWithRootViewController:detail]; splitViewController.viewControllers = [NSArray arrayWithObjects:rootNav, detailNav, nil]; splitViewController.delegate = detail; [window addSubview:splitViewController.view];
编辑 - 根据斯科特的优秀建议,请不要添加到windows子视图
[self.window setRootViewController:(UIViewController*)splitViewController]; // that's the ticket [window makeKeyAndVisible]; return YES; } //detailedView delegate methods - (void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc { [barButtonItem setTitle:@"your title"]; self.navigationItem.leftBarButtonItem = barButtonItem; } - (void)splitViewController:(UISplitViewController*)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem { self.navigationItem.leftBarButtonItem = nil; }
我也更喜欢IB的代码;-)
旧的线程,但是当上述技术无法生成一个能正确响应设备方向更改事件的UISplitViewController时,我认为我会节省阅读时间+悲伤.你需要:
确保所有从属视图在shouldAutorotateToInterfaceOrientation中正确响应.这里没什么新鲜的.
而不是将UISplitViewController的视图添加到主窗口,
[window addSubview:splitViewController.view]; // don't do this
而是将主窗口的根控制器设置为UISplitViewController:
[self.window setRootViewController:(UIViewController*)splitViewController]; // that's the ticket
将splitviewcontroller的视图添加为主窗口的子视图(几乎没有)允许它与兄弟视图共存,但它不能与UISplitViewController的预期用例一起使用.UISplitViewController是一个高地视图; 只能有一个.