使用self.present调用VC时,不会显示navigationItem

时间:2018-05-05 12:27:52

标签: swift uiviewcontroller uinavigationitem

需要帮助,因为我现在正在努力奋斗几天......

我有一个带有从viewDiDLoad调用的导航项的VC:

override func viewDidLoad() {
    super.viewDidLoad()
    self.customization()
    self.fetchData()
}

...

func customization() {
        self.navigationItem.title = self.currentUser?.displayName
    self.navigationItem.setHidesBackButton(true, animated: false)
    let icon = UIImage.init(named: "back")?.withRenderingMode(.alwaysTemplate)
    let backButton = UIBarButtonItem.init(image: icon!, style: .plain, target: self, action: #selector(self.dismissSelf))
    backButton.tintColor = UIColor(red: 0.0157, green: 0.498, blue: 0, alpha: 1.0)
    self.navigationItem.leftBarButtonItem = backButton
    self.locationManager.delegate = self
    print("called customization()")
}

当使用触发的segue Show进行调用时,这种方法毫无问题。

当我使用以下内容调用VC时:

    let storyBoard: UIStoryboard = UIStoryboard(name: "Storyboard", bundle: nil)
    let viewController = storyBoard.instantiateViewController(withIdentifier: "SecondVC") as! SecondVC
self.present(viewController, animated: true, completion: nil)

我从控制台获得了访问viewDidLoad和customizations()的方法:

called customization() 

但是navItem没有显示。

尝试从调用方法复制customization()中的方法,它们被执行但没有显示。

请知道这里有什么问题吗?

1 个答案:

答案 0 :(得分:1)

您必须在演示时添加导航:

let storyBoard: UIStoryboard = UIStoryboard(name: "Storyboard", bundle: nil)
let viewController = storyBoard.instantiateViewController(withIdentifier: "SecondVC") as! SecondVC
let nav = UINavigationController(rootViewController: viewController)
self.present(nav, animated: true, completion: nil)