使用 viewController 的 performSegue 线程错误? iOS
Posted
技术标签:
【中文标题】使用 viewController 的 performSegue 线程错误? iOS【英文标题】:threading error for performSegue with viewController? iOS 【发布时间】:2020-04-10 00:56:22 【问题描述】:我在授权用户的 TouchID 后尝试跳转到第二个视图控制器。我能够验证 TouchID 是否正常工作,但我遇到了跳转到第二个 viewController 的问题。
我创建了一个 SecondViewController 和一个带有标识符“dispenseScreen”的 Segue。但是,每当我尝试跳转到第二个屏幕时,我的程序就会崩溃。
@IBAction func touchID(_ sender: Any)
let context:LAContext = LAContext()
//Removes Enter Password during failed TouchID
context.localizedFallbackTitle = ""
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil)
context.evaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, localizedReason: "We require your TouchID", reply: (wasCorrect, error) in
self.isBiometryReady()
if wasCorrect
self.performSegue(withIdentifier: "dispenseScreen", sender: self)
print("Correct")
else
print("Incorrect")
)
else
//Enter phone password if too many login attempts
//Add message alerting user that TouchID is not enabled
我的代码中没有语义错误,但是当我尝试转到第二个视图控制器时收到线程错误。
【问题讨论】:
【参考方案1】:您正试图在来自evaluatePolicy
的回调中进行转场。对于涉及 UI 的任何内容,您需要确保您在主线程上:(wasCorrect, error) in DispatchQueue.main.async ...
【讨论】:
成功了,谢谢。如何完全切换屏幕?看起来 PerformSegue 只在第一个屏幕前弹出一个“弹出”窗口 对不起,我不是 UIKit 人。如果您对此有疑问,我建议您制作另一个主题。以上是关于使用 viewController 的 performSegue 线程错误? iOS的主要内容,如果未能解决你的问题,请参考以下文章
你如何将数据从 ViewController 传递到包含单独 ViewController 的 PageViewController,然后这些 ViewController 将使用这些数据?
使用 Swift 呈现新的 Viewcontroller 后如何关闭以前的 Viewcontroller?
如何从使用的 viewController 弹回根 ViewController?
使用 ViewController 循环 UIScrollviw
如何在使用 Swift 关闭 ViewController 期间将值从 ViewController B 传递给 ViewController A? [复制]