我尝试以编程方式创建UIPickerView
,为此我做了:
var pickerView = UIPickerView()
override func viewDidLoad() {
super.viewDidLoad()
self.pickerView.delegate = self
self.pickerView.dataSource = self
}
但是我根据线程得到了非常烦人的错误:
Main Thread Checker: UI API called on a background thread: -[UIPickerView init]
PID: 70649, TID: 6408323, Thread name: (none),
Queue name: NSOperationQueue 0x60000023ba20 (QOS: UNSPECIFIED), QoS: 0
它真的很奇怪,因为它之前有效,它现在开始出现了!
我尝试将其更改为:
var pickerView: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
Dispatch.main.async {
self.pickerView = UIPickerView()
self.pickerView.delegate = self
self.pickerView.dataSource = self
}
}
但我又崩溃了。另一个错误日志是:
Assertion failure in void _UIPerformResizeOfTextViewForTextContainer(NSLayoutManager *, UIView<NSTextContainerView> *, NSTextContainer *, NSUInteger)(), /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIFoundation_Sim/UIFoundation-546.4/UIFoundation/TextSystem/NSLayoutManager_Private.m:1619
我花了我的第二个小时,并没有意识到这里有什么问题。有人能帮助我理解吗?
答案 0 :(得分:1)
问题在于,不是在您显示的任何代码中(在视图控制器内),而是在召唤视图控制器的代码中。视图控制器是如何形成的?例如,如果是因为您致电performSegue
,则需要确保在主线程上调用performSegue
。