【问题标题】:Change navigationBar appearance更改导航栏外观
【发布时间】:2013-01-03 11:39:03
【问题描述】:

我的应用程序流程:AViewController -> BViewController -> CViewController(通过 navigationController)。 AViewControllerCViewController 看起来一样,只有 BViewController 看起来不同。

我是这样做的:

/// AppDelegate (should be 'super' settings)
[[UINavigationBar appearanceWhenContainedIn:[ABCNavigationController class], nil] setBackgroundImage:theImage forBarMetrics:UIBarMetricsDefault];

/// BViewController (should apply ONLY to BViewController)
[self.navigationController.navigationBar setBackgroundImage:BImage forBarMetrics:UIBarMetricsDefault];

问题是在CViewController 中我看到我在BViewController 中加载的图像而不是在appDelegate 中。如何恢复到 appDelegate 设置?

我应该强调 backgroundImage 是我设置的许多元素之一,在这里举个例子。

【问题讨论】:

    标签: objective-c ios uinavigationcontroller appearance


    【解决方案1】:

    CViewController 中尝试将导航栏的背景图像设置为nilviewWillAppear 中,因为它仍然由您的BViewController 设置。

    [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
    

    【讨论】:

    • 它使 backgroundImage 完全消失,它不会从 appDelegate 加载一个,而是从 BViewController 中删除一个(并且不恢复 appDelegate 一个)。
    • 我明白了。我以为你在所有屏幕中都设置了默认导航栏,除了 B VC。然后只需在 AppDelegate 中的 C VC 中设置该背景图像。
    • 我给出了完整的解释和示例,表明我在 A 和 C 中设置了不同的图像。无论如何感谢您的访问。您现在知道如何解决了吗?
    • 您说“AViewController 和 CViewController 看起来一样,只有 BViewController 看起来不同。”那么我会从应用程序委托中删除该行,并在每个 ViewControllerviewWillAppear 中设置导航栏的背景。
    • 但也写了我想恢复“AppDelegate”设置,举个例子;)Nvm,这只是一个误解。至于现在我做了你写的,在 B 'viewWillAppear' 和 'viewDidDisappear' 我交换设置,但这不是一个好的解决方案。仍在寻找通过“[UINavigationBar appearanceWhenContainedIn:]”的方法。感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多