Touch ID での認証後、Modal で UITabBarController に画面遷移を行う方法
まず、アプリの起動時に First View を表示し、First View の viewDidLoad 関数で Touch ID の認証を行う記述をしました。
override func viewDidLoad() {
super.viewDidLoad()
let context = LAContext()
var error :NSError?
let localizedReason = "Touch ID で保護"
if context.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error: &error){
//Tocuh ID に対応
context.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: localizedReason, reply: {
success, error in
if success {
let storyboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let next:UIViewController = storyboard.instantiateViewControllerWithIdentifier("Home")
as UIViewController
next.modalTransitionStyle = UIModalTransitionStyle.FlipHorizontal
self.presentViewController(next, animated: true, completion: nil)
} else {
switch error!.code {
case LAError.AuthenticationFailed.rawValue:
NSLog("認証失敗")
case LAError.UserCancel.rawValue:
NSLog("キャンセル")
case LAError.UserFallback.rawValue:
NSLog("パスコードを入力を選択")
case LAError.PasscodeNotSet.rawValue:
NSLog("パスコードが設定されていない")
case LAError.SystemCancel.rawValue:
NSLog("システムによってキャンセルされた")
default:
NSLog("不明なエラー")
return
}
}
})
} else {
//Tocuh ID に非対応
NSLog("Touch IDに対応してない")
}
}
Touch ID での認証に成功した後、Modal の FlipHorizontal で画面遷移を行いたいのですが、
スクリーンショットのようになってしまい、TabBarItem の icon が表示されません。
一度、その TabBarItem をタップするか、しばらく時間が経つ(その時間は起動するたびにまちまち)と表示されるようになりますが、
通常の画面遷移の時のように一発で表示されるようにしたいです。
遷移先は Main.Storyboard にある UITabBarController、Storyboard ID は "Home" です。
どのようにすればよいか、ご教授願います。
なお、Apple Swift version 2.1 (swiftlang-700.1.101.6 clang-700.1.76) を使用しています。