ios - iOS 6.0 上 uisplitiview 主视图中的工具栏隐藏/取消隐藏问题,纵向模式

标签 ios uinavigationcontroller uisplitviewcontroller uitoolbar ios6

一个奇怪的问题只发生在iOS 6.0上。 在基于 UISplitViewController 的应用程序的 iPad 纵向模式下,主视图是基于导航 Controller 的。主视图的第一个 View Controller 显示了工具栏按钮,如果我按下第二个 View Controller 并隐藏工具栏,那么在弹出第二个 View Controller 后,第一个 View Controller 的工具栏上的按钮将永远丢失。(即,显示一个空白工具栏)。 工具栏按钮在第一个 View Controller 的 viewDidLoad 中初始化。在第二个 View Controller 的viewDidLoad中调用[self.navigationController setToolbarHidden:YES]隐藏工具栏,在第一个 View Controller 的viewWillAppear中调用[self.navigationController setToolbarHidden:NO]再次显示工具栏。

有什么建议吗?在导航 Controller 中隐藏/取消隐藏工具栏的正确方法是什么?

顺便说一句,它在 iOS 4.3、5.1.1 上运行良好,在 iPad 上的 iOS 6.0 横向模式下运行良好。此问题仅发生在 iPad 的 iOS 6.0 纵向模式下。

编辑:在 iPhone、ios 6.0 上,同样的问题。不过,在运行 iOS 6.0 的 iPad 的横向模式下效果很好。

最佳答案

由于此问题也出现在 iOS 6.0 的 iPhone 上,因此可能与 UISplitView 纵向模式无关。(尽管 UISplitView 横向模式没问题)。

所以我专注于 UINavigationController 的工具栏显示/隐藏,这个线程( Toolbar in Navigation Controller )解决了我的问题。

我删除了viewDiDLoad和viewWillAppear中的setToolBarHidden代码,并实现了UINavigationController委托(delegate)协议(protocol):

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    BOOL shouldHide = [viewController.toolbarItems count] == 0;
    [navigationController setToolbarHidden:shouldHide animated:animated];
}

现在可以了。但是,我仍然不知道为什么原始代码在 iPhone 和 iPad 纵向模式下的 iOS 6.0 上不起作用。

关于ios - iOS 6.0 上 uisplitiview 主视图中的工具栏隐藏/取消隐藏问题,纵向模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12544605/

相关文章:

iOS Facebook 登录不起作用

ios - 使用文本和占位符创建 UITextfield

iphone - 更改 "More"选项卡的导航栏颜色?

ios - 没有 Storyboard的 UiSplitViewController App

objective-c - 核心数据 : Automatically select next table row when record deleted

ios - 如何打印轨迹数据(swift)

iphone - ios uiscrollview 与 uiimageviews 之间启用分页如何检测哪个在屏幕上/可见

ios - 为什么我的 UINavigationBar 背景中添加了一种颜色?

iphone - 当 UITabBarControllerDelegate 调用时 popToRootViewController 崩溃

ios - iPad 横向模式下的三 Pane Split View界面