博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iphone:UISplitView
阅读量:7082 次
发布时间:2019-06-28

本文共 3464 字,大约阅读时间需要 11 分钟。

    UINavigationController *nc = [self.splitViewController.viewControllers  lastObject];

    self.detailViewController = (SplitViewDetailViewController *)[nc topViewController];

有一个splitViewController属性,其viewControllers为一个含两个ViewController的数组,0-left,1-right in landscape

 

 

看文档:https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UISplitViewController_class/Reference/Reference.html#//apple_ref/doc/uid/TP40009277

The array in this property must contain exactly two view controllers. The view controllers are presented left-to-right in the split view interface when it is in a landscape orientation. Thus, the view controller at index 0 is displayed on the left side and the view controller at index 1 is displayed on the right side of the interface.

The first view controller in this array is typically hidden when the device is in a portrait orientation. Assign a delegate object to the receiver if you want to coordinate the display of this view controller using a popover.

 

创建过程:

在StoryBoard中让Master Detail都Embed in navi..

然后先在AppDelegate的

didFinishLaunchingWithOptions中添加代码,使得splitView的delegate为DetailViewController

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    // Override point for customization after application launch.    UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;    UINavigationController *navigationController = [splitViewController.viewControllers lastObject];    splitViewController.delegate = (id)navigationController.topViewController;    return YES;}

在MasterVC中取得DetailVC

 

@property (strong, nonatomic) DetailViewController *detailViewController;

viewDidLoad:

    UINavigationController *nc = [self.splitViewController.viewControllers  lastObject];

    self.detailViewController = (DetailViewController *)[nc topViewController];

 

self.detailViewController.detailItem =  xxxx;

 

在DetailVC中,当然要遵循<UISplitViewControllerDelegate>

 

@property (strong, nonatomic) id detailItem;//in .h

@property (strong, nonatomic) UIPopoverController *masterPopoverController;//in .m

 

- (void)setDetailItem:(id)newDetailItem {        

    // Update the view.  

}

#pragma mark - Split view- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController{    barButtonItem.title = @"列表";    [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];    self.masterPopoverController = popoverController;}- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem{    // Called when the view is shown again in the split view, invalidating the button and popover controller.    [self.navigationItem setLeftBarButtonItem:nil animated:YES];    self.masterPopoverController = nil;}

 

    若DetailVC不止是一个ViewController,我们可以使MasterVC遵循<UISplitViewControllerDelegate>,实现其委托方法;让DetailVC遵循自定义的协议,其功能是使在land和port时隐藏\显示 调出popover的barItem

 

然后在tableView:didSelectRowAtIndexPath: 中实例化相应的DetailVC,

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];

    FirstDetailViewController *newDetailViewController = [storyboard instantiateViewControllerWithIdentifier:@"v1"];

    detailViewController = newDetailViewController;

 当然也可以通过StoryBoard中的Segue代替实现实例化功能

 

 

 

转载地址:http://ywmml.baihongyu.com/

你可能感兴趣的文章
开源监控软件Hyperic 对 MongoDB的监控
查看>>
Java:如何检查枚举是否包含给定的字符串?
查看>>
Webstorm/Phpstorm中将ES6文件转为普通js文件
查看>>
为什么Go不支持函数和运算的重载
查看>>
「征文」我和极光有个约会
查看>>
js鼠标滚轮事件
查看>>
java 调用摄像头
查看>>
阿里云maven库地址 和maven跳过测试 和常见maven命令
查看>>
Android网络防火墙实现初探
查看>>
欲保长寿,先补亏损 —胡海牙
查看>>
数据容量进制转换
查看>>
Spring Cloud Zuul过滤器详解
查看>>
使用DOM4J创建一个新的XML文件
查看>>
VIM使用系列:搜索功能
查看>>
SOAP--------Golang对接WebService服务实战
查看>>
7大维度看国外企业为啥选择gRPC打造高性能微服务?
查看>>
初创公司电商系统建立思考
查看>>
微服务框架Spring Cloud介绍 Part2: Spring Cloud与微服务
查看>>
linux系统下设置时间同步
查看>>
dubbo源码学习笔记----整体结构
查看>>