Ste*_*eve 46 objective-c ipad uisplitviewcontroller
我通常创建没有IB东西的项目.我做的第一件事是剥离所有对xibs,outlet更新plist等的引用.没问题,效果很好(在我的世界里)!
现在,我刚刚安装了3.2并试图开发我的第一个iPad应用程序.按照与以前相同的步骤,我创建了一个基于UISplitView的应用程序项目,并剥离了所有IB的东西.另外,我也跟着苹果的参考文档部分:创建拆分视图控制器编程,但尽管如此,主视图从未显示,仅细节视图是(不管方向是什么).我真的试图仔细看看,但我无法理解我错过了什么.
是否有一个UISplitViewController的工作示例没有在某处漂浮的笔尖?我用谷歌搜索但找不到任何东西.或者你知道我可能错过了什么吗?
Nik*_*rns 59
在你的委托标题中声明你的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];
Run Code Online (Sandbox Code Playgroud)
编辑 - 根据斯科特的优秀建议,请不要添加到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;
}
Run Code Online (Sandbox Code Playgroud)
我也更喜欢IB的代码;-)
小智 23
旧的线程,但是当上述技术无法生成一个能正确响应设备方向更改事件的UISplitViewController时,我认为我会节省阅读时间+悲伤.你需要:
而不是将UISplitViewController的视图添加到主窗口,
[window addSubview:splitViewController.view]; // don't do this
Run Code Online (Sandbox Code Playgroud)
而是将主窗口的根控制器设置为UISplitViewController:
[self.window setRootViewController:(UIViewController*)splitViewController]; // that's the ticket
Run Code Online (Sandbox Code Playgroud)将splitviewcontroller的视图添加为主窗口的子视图(几乎没有)允许它与兄弟视图共存,但它不能与UISplitViewController的预期用例一起使用.UISplitViewController是一个高地视图; 只能有一个.
斯威夫特 5.2
iOS 13
主视图控制器和细节视图控制器都嵌入在导航控制器中
let splitViewController = UISplitViewController()
splitViewController.delegate = self
let masterVC = MasterViewController()
let detailVC = DetailViewController()
let masterNavController = UINavigationController(rootViewController: masterVC)
let detailNavController = UINavigationController(rootViewController: detailVC)
splitViewController.viewControllers = [masterNavController,detailNavController]
Run Code Online (Sandbox Code Playgroud)
您可以将此代码放在 AppDelegate 的(或如果您的目标是 iOS 13.0+ 的 SceneDelegate)didFinishLaunchingWithOptions函数中。只要记住让splitViewController你rootViewController像这样
self.window!.rootViewController = splitViewController
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37057 次 |
| 最近记录: |