iOS не может одновременно удовлетворить ограничения в loadView

Я получаю Невозможно одновременно удовлетворить ограничения ошибки.

Я не получаю сообщение об ошибке, когда viewcontroller устанавливает себя с помощью viewDidLoad, но он получает ошибку при использовании loadView... Почему это происходит?

Я думал, что единственная разница между loadView и viewDidLoad заключается в том, что viewDidLoad возникает после loadView. По крайней мере, это, кажется, будет объяснение...

1 ответ

Я не знаю, полностью ли мой ответ решит вашу проблему, но он может послужить отправной точкой для решения вашей проблемы.

Есть довольно много моментов (о которых вы могли бы знать), которые необходимо отметить перед использованием loadView:

  1. loadView - это метод, который вызывается при загрузке представления, viewDidLoad - это метод, который будет выполнен после загрузки представления.

  2. loadView рекомендуется, когда вы хотите создать представление программно, а не устанавливать его в xib-файле, иначе нет смысла использовать или вызывать loadView (хотя все зависит от требований вашего приложения).

  3. Не вызывайте super loadView, если вы инициализируете свой вид из раскадровки или из файла xib.

  4. Если вы инициализируете свой вид из раскадровки, не звоните [super loadView] и вы должны назначить свой rootView свойству self.view, если вы вызываете [super loadView] внутри метода лучше не переопределять этот метод и не помещать свой код в метод viewDidLoad.

  5. Если вы используете файл xib для настройки представления, внесите изменения в объекты, настроенные в viewDidLoad, и не вызывайте loadView, если вы создаете представление программно, инициализируйте представление в loadView и выполните дополнительную настройку в viewDidLoad.,

Ошибка ограничения обычно появляется в раскадровке или в файле xib, когда выбрано "Использовать автоматическую разметку", если вы отмените выбор, ошибка исчезнет, ​​так как вы создаете представление программно в loadView, вы должны убедиться, что опция автоматического размещения отключена, т.е. вам нужно использовать setTranslatesAutoresizingMaskIntoConstraints свойство, установив его на "НЕТ".

Вы также можете обратиться к некоторым смежным вопросам здесь и там, которые могли бы вывести вас из этой проблемы.

Спасибо и счастливого кодирования:)

Другие вопросы по тегам