我正在 iOS 7 上实现一个主从应用程序,主视图 Controller 是一个导航 Controller ,它可以在两个 TableView Controller 中导航。细节是一个显示图像的简单 View Controller 。
我已经详细实现了 UISplitViewController 方法:
- (BOOL) splitViewControllerUISplitViewController *)svc shouldHideViewControllerUIViewController *)vc inOrientationUIInterfaceOrientation)orientation
{
return UIInterfaceOrientationIsPortrait(orientation);
}
- (void) splitViewControllerUISplitViewController *)svc willHideViewControllerUIViewController *)aViewController withBarButtonItemUIBarButtonItem *)barButtonItem forPopoverControllerUIPopoverController *)pc
{
UINavigationController* nav= (UINavigationController*)aViewController;
barButtonItem.title= nav.topViewController.title;
self.navigationItem.leftBarButtonItem= barButtonItem;
}
- (void) splitViewControllerUISplitViewController *)svc willShowViewControllerUIViewController *)aViewController invalidatingBarButtonItemUIBarButtonItem *)barButtonItem
{
self.navigationItem.leftBarButtonItem= nil;
}
问题在于,当用户使用手势关闭主视图 Controller 时,不会调用 splitViewController:willHideViewController:withBarButtonItem:forPopoverController: 。
这样的问题是,如果用户通过主导航 Controller 导航然后关闭主控,标签栏按钮项目显示旧标题。
为了更清楚,我将逐步解释发生了什么。主导航 Controller 的根导航 Controller 的标题是“Top Places”。推送的 View Controller 的标题是“照片”。当应用启动时,纵向模式下没有主人:
用户呈现“Top Places” View Controller :
然后用户导航到第二个 View Controller :“照片”:
然后用户关闭主人,但标签栏按钮项目仍然保留它的旧标题“Top Places”:
问题是 Split View Controller 委托(delegate)在通过手势解除主控时没有调用方法。
Best Answer-推荐答案 strong>
根本没有 UISplitViewControllerDelegate 委托(delegate)方法来检测在纵向时弹出框何时被解除。它是如何被解雇的并不重要。如果您想知道,请为弹出框 Controller 设置一个委托(delegate)。
从横向旋转到纵向时会调用 splitViewController:willHideViewController:withBarButtonItem:forPopoverController: 委托(delegate)方法。
关于ios - 知道何时用手势解除 Split View Controller 的主控,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/22702557/
|