2017-07-07 43 views
0

我希望能夠更改我的導航控制器中特定UIViewController上的後條按鈕項目的操作,以便它彈出到根視圖控制器。我試過以下,但他們不工作:更改後條按鈕項目的操作

let backButton = UIBarButtonItem(title: nil, style: .plain, target: self, action: #selector(back)) 
self.navigationItem.backBarButtonItem = backButton 

self.navigationItem.backBarButtonItem?.action = #selector(back) 

有什麼建議?

+0

你可以使用'UINavigationBarDelegate'的'func navigationBar(UINavigationBar,shouldPop:UINavigationItem)'嗎? – DonMag

回答

0

您應該使用self.navigationItem.leftBarButtonItem = backButton

好運

+0

這可行,但沒有後退按鈕箭頭「<」 – Tometoyou

1

首先backBarButtonItem行動不是作品,因爲你只能改變後退按鈕標題,看看問題吧here

解決方案

在視圖控制器從要流行到根視圖控制器需要設置爲UINavigationControllerDelegate

的委託
override func viewDidLoad() { 
    super.viewDidLoad() 

    navigationController?.delegate = self 
} 

和實施UINavigationControllerDelegate這method`

func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) { 
    if viewController.isKind(of:PreviousViewController.self) { 
     navigationController.popToRootViewController(animated: animated) 
    } 
} 

如果我的答案不符合你的需求,你可以檢查類似的問題here

相關問題