Без изменения чего-либо в контроллере представления или обновления до новой версии XCode отображение UIAlertController больше не работает.
Xcode выдает мне сообщение об ошибке: Метод фабрики ограничений был передан без привязки макета.Это недопустимо и может вызвать непонятные исключения.Перерыв на BOOL _NSLayoutConstraintToNilAnchor (void) для отладки.Это будет зарегистрировано только один раз.Это может сломаться в будущем.
Теперь я успешно попытался отладить его с точкой останова, указанной в сообщении об ошибке.
Вот что я получил:
Foundation`_NSLayoutConstraintToNilAnchor:
-> 0x1b51342ec <+0>: pacibsp
0x1b51342f0 <+4>: sub sp, sp, #0x30 ; =0x30
0x1b51342f4 <+8>: stp x20, x19, [sp, #0x10]
0x1b51342f8 <+12>: stp x29, x30, [sp, #0x20]
0x1b51342fc <+16>: add x29, sp, #0x20 ; =0x20
0x1b5134300 <+20>: adrp x19, 224497
0x1b5134304 <+24>: ldrb w8, [x19, #0xd30]
0x1b5134308 <+28>: tbnz w8, #0x0, 0x1b5134334 ; <+72>
0x1b513430c <+32>: adrp x8, 366
0x1b5134310 <+36>: add x8, x8, #0x30a ; =0x30a
0x1b5134314 <+40>: adrp x9, 196084
0x1b5134318 <+44>: add x9, x9, #0x2a8 ; =0x2a8
0x1b513431c <+48>: stp x9, x8, [sp]
0x1b5134320 <+52>: adrp x0, 196084
0x1b5134324 <+56>: add x0, x0, #0x288 ; =0x288
0x1b5134328 <+60>: bl 0x1b5105f6c ; NSLog
0x1b513432c <+64>: orr w8, wzr, #0x1
0x1b5134330 <+68>: strb w8, [x19, #0xd30]
0x1b5134334 <+72>: ldp x29, x30, [sp, #0x20]
0x1b5134338 <+76>: ldp x20, x19, [sp, #0x10]
0x1b513433c <+80>: add sp, sp, #0x30 ; =0x30
0x1b5134340 <+84>: retab
IЯ должен признать, что эта отладка немного мне не известна.
И это мой Код для отображения Предупреждения:
let vc = UIViewController()
pickerData = data
vc.preferredContentSize = CGSize(width: 250,height: 275)
let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 250, height: 275))
pickerView.delegate = self
pickerView.dataSource = self
if let index = data.firstIndex(of: "Std.") {
pickerView.selectRow(index , inComponent: 0, animated: false)
}
vc.view.addSubview(pickerView)
let alert = UIAlertController(title: title, message: "", preferredStyle: UIAlertController.Style.alert)
alert.setValue(vc, forKey: "contentViewController")
let defaultAction = UIAlertAction(title: "Save", style: .default) {
(result : UIAlertAction) -> Void in
***
self.dismiss(animated: true)
}
alert.addAction(defaultAction)
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
self.present(alert, animated: true)
Точка останова явно останавливается на последней строке:
self.present(alert, animated: true)
В чем может быть ошибка?