在 UITabBarController 中,moreNavigationController 始终为零

Posted

技术标签:

【中文标题】在 UITabBarController 中,moreNavigationController 始终为零【英文标题】:moreNavigationController is always nil in UITabBarController 【发布时间】:2018-01-26 17:14:43 【问题描述】:

我正在尝试在我的UITabBarController 中自定义“更多”按钮的标题,因为我正在使用另一种语言编写应用程序。我将UITabBarController 子类化为能够访问tabBarController 属性。不幸的是,无论我把它放在viewDidLoad 还是viewDidAppear(_) 中,它总是nil。关于如何编辑它的任何想法?

import UIKit

class ControllerVC: UITabBarController 

    let uiManager = UIManager()

    override func viewDidLoad() 
        super.viewDidLoad()
    

    override func viewDidAppear(_ animated: Bool) 
        if let tabBarItem = tabBarController?.moreNavigationController.tabBarItem 
            let deselectedImage = tabBarItem.image
            let selectedImage = tabBarItem.selectedImage
            tabBarController!.moreNavigationController.tabBarItem = UITabBarItem(title: "بیشتر", image: deselectedImage, selectedImage: selectedImage)
         else 
            uiManager.showActivityIndicator(self)
        
    


【问题讨论】:

@DivyeshGondaliya 不需要。 【参考方案1】:

问题不在于moreNavigationController。问题在于tabBarController。你的班级是UITabBarController。标签栏控制器的tabBarController 属性始终为nil

只要做:

let tabBarItem = moreNavigationController.tabBarItem
let deselectedImage = tabBarItem.image
let selectedImage = tabBarItem.selectedImage
moreNavigationController.tabBarItem = UITabBarItem(title: "بیشتر", image: deselectedImage, selectedImage: selectedImage)

【讨论】:

感谢您的帮助。现在它进入 if 语句。唯一的问题是我所做的更改没有生效。我写了moreNavigationController.tabBarItem = UITabBarItem(title: "بیشتر", image: deselectedImage, selectedImage: selectedImage),但它不起作用。显示带有“更多”标签的简单的“更多”按钮。 这是与您的原始问题不同的问题。但这可能只是您无法更改“更多”控制器的选项卡。如果您的应用正确本地化,它应该会自动更改。

以上是关于在 UITabBarController 中,moreNavigationController 始终为零的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UINavigationController 中嵌入 UITabBarController?

无法让辅助 UITableViewController 在 UITabBarController 中显示

在UITabBarController中强制特定的viewcontroller在landscape中

在 UITabBarController 中呈现模态视图

在 UITabBarController 的 UINavigationController 中推送 UIViewController

在 UITabBarController 中呈现一个新的 UIViewControler