2015-08-14 92 views
2

我正在創建應用程序,並且要訪問用戶必須輸入的應用程序的main screenfingerprint。我已將它設置爲當fingerprint正確時,它會以編程方式將segue執行爲連接到main view controllernavigation controller。這裏是我的代碼:指紋驗證後不顯示UIBarButtonItem

let context = LAContext() 
    var error: NSError? 

    if context.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: &error) { 

     let reason = "Authenticate with Touch ID" 

     context.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, localizedReason: reason, reply: 
      {(succes: Bool, error: NSError!) in 

       if succes { 

        self.showOrHide(true) 
        ProgressHUD.showSuccess("Success") 

        self.performSegueWithIdentifier("passwordCorrectSegue", sender: nil) 

       } else { 

       } 

     }) 

    } else { 

     self.touchIDLabel.hidden = true 
     self.touchIDImage.hidden = true 

    } 

問題是,當我perform the segue和它去navigation controller足見view controller,該UIBarButtonItem's不顯示在屏幕的左上角和右上角。您仍然可以點擊屏幕的左上角和右上角,並且這些按鈕的操作將會運行。問題是UIBarButtonItem's只是沒有顯示。我嘗試過的另一件事是,您也可以選擇輸入密碼,並且當密碼正確時,它會轉到下一個view controller ......並且它可以很好地工作。有誰知道如何解決這一問題?

UIBarButtonItems只是當我試圖執行使用指紋法該方法時,使用方法

self.performSegueWithIdentifier("passwordCorrectSegue", sender: nil) 

不顯示。

回答

0

我有完全相同的問題:我有2個VC,每個都能夠繼續到第三個;如果我從第一個開始繼續,則右側欄按鈕項目不可見(但仍然有效),但是如果我從第二個開始繼續,則右側欄按鈕項目可見。

我想這是iOS9中的一個錯誤。

我所用的解決方法是強制權欄按鈕項的初始化在目標視圖控制器「的viewDidLoad」:

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Force right bar button item when using performSeguewithIdentifier (bug in iOS9?) 
    navigationItem.rightBarButtonItem = UIBarButtonItem(
    image: UIImage(assetIdentifier: .Profile), 
    style: UIBarButtonItemStyle.Plain, 
    target: self, 
    action: Selector("displayUser")) 
} 

這解決了該問題對我來說(至少直到蘋果修復了這個bug) 。