UISplitViewController 在不添加启动密码时,开机默认的委托方中执行顺序为
先 调用
-(void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc
再 调用
- (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
但是:
如果 添加了启动密码之后,密码框要 以 模式视图的形式添加,所以 此时就不会再调用
放发了,
- (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
如果需要的话(在分割视图中 需要控制导航栏 的按钮个数时),可以在输入密码结束后 手工调用
如下:
[self splitViewController:splitController willShowViewController:masterController invalidatingBarButtonItem:nil];
、、、、、、、、、、、、、、、、、、、、、、不仅仅如此、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
在 添加玩密码框之后,还需要手工调用 master 与 detail的 转屏方法
如下:
UIInterfaceOrientation orientation = self.splitController.interfaceOrientation; UIInterfaceOrientation masterFrom = self.masterController.interfaceOrientation; UIInterfaceOrientation detailFrom = self.detailController.interfaceOrientation; [self.masterController willRotateToInterfaceOrientation:orientation duration:.1]; [self.detailController willRotateToInterfaceOrientation:orientation duration:.1]; [self.masterController didRotateFromInterfaceOrientation:masterFrom]; [self.detailController didRotateFromInterfaceOrientation:detailFrom];
综上所述:在添加玩密码框之后 可以将方法封装一下,如下,待密码输入正确时调用
在 (UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:ButtonItem;
方法中调用下面的语句,保存 master 的按钮(因为时系统作为参数传递过来的),在手动调用时要用到
profileBarButtonItem = barsplitViewController: