我有一个UIViewController,其中在UITableView中嵌入了UINavigationController,该UITabBarController启动了​​UITabBarController。显示的导航栏包括后退按钮,我可以通过UIBarButtonItem编程方式更改导航项的标题。

但是我不能在UITabBarController的子控制器中添加UINavigationController。既不在情节提要中,也没有编程方式。

我还尝试将子控制器嵌入UIBarButtonItem中,但这只是添加了第二个导航栏。如何从UITabBarController的子级添加?

最佳答案

在情节提要中,视图控制器位于导航控制器内部。并且您的子视图控制器是视图控制器的INSIDE选项卡栏控制器。您无法添加条形按钮,因为您无法访问navigationController属性(在子控制器的情况下为零)。

通过访问navigationControllertabBarController进行调试。在您的情况下,最有可能是tabBarController?.navigationController

编辑

这就是我在代码中维护导航栏的方式:

final class MyVC: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        setupNavigationBar(withTitle: "MyVC")
    }
}
extension UIViewController {
    func setupNavigationBar(withTitle title: String? = nil) {
        let backButton = UIBarButtonItem(image: #imageLiteral(resourceName: back), style: .plain, target: self, action: #selector(popVC(animated:)))
        backButton.tintColor = .white
        navigationItem.leftBarButtonItem = backButton
        navigationItem.title = title
    }

    @objc
    func popVC(animated: Bool = true) {
        navigationController?.popViewController(animated: true)
    }
}

关于ios - 将UIBarButtonItem添加为UITabBarController的子级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53668604/

10-13 09:27