UIBarButtonItem不会在指纹认证后出现

时间:2015-08-14 20:11:47

标签: ios swift authentication touch-id

我正在创建一个应用,并且要访问用户必须在main screen输入的应用的fingerprint。我进行了设置,以便在fingerprint正确时以编程方式执行segue到与navigation controller相连的main view controller。这是我的代码:

    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的{​​{1}}时,view controller没有显示在UIBarButtonItem's的左上角和右上角屏幕。您仍然可以单击屏幕的左上角和右上角,这些按钮的操作将会运行。问题是UIBarButtonItem's没有显示。我尝试过的另一件事是你也可以选择输入密码,当密码正确时,它会转到下一个view controller ......它完美无缺。有谁知道如何解决这个问题?

UIBarButtonItems只是在我使用方法时显示

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

尝试使用指纹方法执行该方法时。

1 个答案:

答案 0 :(得分: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"))
}

这解决了我的问题(至少在Apple修复此错误之前)。