你好,这是我的控制器类
class passwordViewController: UIViewController {
let load = UIActivityIndicatorView(style: .whiteLarge) // cause error
let passwordTextFiled:UITextField = { // cause error
let pass = UITextField()
pass.placeholder = ""
pass.addDoneButtonOnKeyboard()
pass.textColor = .gray
pass.textAlignment = NSTextAlignment.center
return pass
}()
let barLabel:UILabel = {
let bar = UILabel()
bar.text=""
bar.backgroundColor = Colors.yellow
return bar
}()
// there is more code here.i avoid to copy
}
当我直接运行这个控制器时,没有错误 . 但是当我从其他控制器发出错误时会导致此错误
UIView.init()只能从主线程使用
更新1:
有一个带有一个按钮的控制器,按钮可以转到控制器B.
这是我的segue代码:
DispatchQueue.main.async {
self.performSegue(withIdentifier: "passVC", sender: nil)
}
我在这里有B控制器代码swift 4和代码10
2 回答
该错误告诉您正在从后台线程创建视图控制器,并且必须在主线程上创建它(所有UI工作必须在主线程上完成) .
因此,当您在后台线程中并且想要执行UI工作时,您应该使用调度队列调用来在正确的线程中运行代码 .
所以在你的情况下,我想你正在做一些网络请求来检查身份验证 .
//将你的segue代码从另一个控制器移动到密码控制器
}