首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改detailNavigationBar,但也修改rootNavigationBar

修改detailNavigationBar,但也修改rootNavigationBar
EN

Stack Overflow用户
提问于 2017-10-12 18:57:02
回答 1查看 25关注 0票数 0

我有一个问题,当pushViewController从MainViewController到DetailViewController。我在MainViewController中的navigationBar是白色的,但当我将DetailViewController中的navigationBar项更改为白色或将backgrondColor更改为clear时,它在MainViewController中也会发生变化。就像视图是一样的,但只推送背景…

主视图

详细视图

再看一遍主视图

我正在以编程方式编写我的应用程序(没有故事板)。AppDelegate是这样的:

代码语言:javascript
复制
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    /********** Storyboard Config **********/
    window = UIWindow(frame: UIScreen.main.bounds)
    window?.makeKeyAndVisible()
    window?.rootViewController = TabBarController()

    return true
}

TabBarController是这样的:

代码语言:javascript
复制
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)

    // Create Tab MainViewController
    let mainNavigationController = MainViewController(collectionViewLayout: UICollectionViewFlowLayout())
    mainNavigationController.title = "Main"
    let mainController = UINavigationController(rootViewController: mainNavigationController)
    mainController.title = "Main"
    mainController.tabBarItem.image = UIImage(named: "UITabBarBookmarksTemplate")
    mainController.tabBarItem.selectedImage = UIImage(named: "UITabBarBookmarksTemplateSelected")

    // Create Tab UserViewController
    let userNavigationController = UserViewController(collectionViewLayout: UICollectionViewFlowLayout())
    userNavigationController.title = ""
    let userController = UINavigationController(rootViewController: userNavigationController)
    userController.title = "Profile"
    userController.tabBarItem.image = UIImage(named: "UITabBarContactsTemplate")
    userController.tabBarItem.selectedImage = UIImage(named: "UITabBarContactsTemplateSelected")

    viewControllers = [mainController, userController]

}

MainViewController的pushViewController代码为:

代码语言:javascript
复制
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let layout = UICollectionViewFlowLayout()
    let controller = DetailViewController(collectionViewLayout: layout)
    controller.data = cloudDatas?[indexPath.item]

    navigationController?.pushViewController(controller, animated: true)
}

我在DetailViewController中唯一改变的是:

代码语言:javascript
复制
// Translucent Navigation Bar
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.isTranslucent = true
    self.navigationController?.navigationBar.backgroundColor = UIColor.clear
    self.navigationController?.navigationBar.tintColor = UIColor.white

使用此代码,当我导航到MainView并返回到clearColor控制器时,DetailViewController控制器中的DetailViewController从白色变为MainView ...

‍♂️

有什么问题吗??请帮帮我!

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-10-13 09:34:23

DetailViewController中使用以下代码

代码语言:javascript
复制
 self.navigationController?.navigationBar.isHidden = true

代替它的是:

代码语言:javascript
复制
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.backgroundColor = UIColor.clear
self.navigationController?.navigationBar.tintColor = UIColor.white

并将此添加到MainViewControllerviewWillAppear

代码语言:javascript
复制
self.navigationController?.navigationBar.isHidden = false
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46707863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档