Почему не iOS 5.0, как приложения с открытым окном? Почему он запрашивает использование контроллеров представлений?

У меня есть приложение iOS, которое я создал с помощью шаблона Xcode 4.0 «Окно на основе приложения». Тогда он работал отлично, и он использовал iOS 4.3 SDK. Это приложение, которое просто помещает кнопки, метки и т. Д. Непосредственно в окно. Нет диспетчеров просмотра – ничего.

Но теперь, когда я обновился до Xcode 4.2 (и его iOS 5.0 SDK), и я запустил приложение, это сообщение регистрируется на консоли, когда приложение запускается в симуляторе:

«Ожидается, что в конце запуска приложений ожидается контроллер корневого представления»,

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

Почему это происходит? Почему iOS 5.0 предпочитает / запрашивает контроллеры представлений?

Я не знаю конкретно, почему сообщение заносится в журнал, но интеграция между UIWindow и UIViewController возрастает в течение последних нескольких итераций iOS. iOS 4 добавила свойство rootViewController в UIWindow. Два класса работают вместе, чтобы управлять поворотом просмотра. Учитывая новые возможности, которые IOS 5 представила UIViewController (в частности, возможность создавать собственные контроллеры представления контейнеров), ясно, что отношения между этими двумя классами будут продолжать развиваться. Как вы сказали, ваше приложение продолжает функционировать в iOS 5, поэтому наличие контроллера корневого представления еще не является сложным и быстрым требованием. Возможно, есть функции, запланированные для будущих версий iOS, которые будут зависеть от наличия контроллера вида.

У меня нет ничего против них, и я буду использовать их, если iOS хочет, чтобы я это сделал. Мне было просто любопытно, как это произошло.

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

Вы только что подключили свой «вид» к «Владелец файла» ….. просто удалите это соединение и запустите приложение. Посмотрите на свое мнение и посмотрите область инспектора соединений и удалите это соединение, о котором я сказал. Я точно не знаю, что Причина … но у меня была эта проблема, и я очистился. Возможно, вы использовали в нем какое-то табличное представление или некоторые другие представления. Итак, приложение. нужен диспетчер представлений для запуска. Если вы удалите это соединение, тогда он будет запускать то, что вы написали только в коде …

Позвольте мне рассказать вам причину.

В предыдущем издании Window-based Application используется для создания приложений с несколькими просмотрами. Но в Xcode 4.2 оконное приложение больше не существует. Пустое приложение предназначено для создания программы с несколькими видами.

Разница между Window-based Application и Empty Application заключается в том, что у первого есть главное окно MainWindow.xib.

Когда программа запускается, iPhone сначала создает основное окно. Содержимое в MainWindow будет загружено и построено. Но если вам нужно больше функций, например мульти-просмотр, вам все равно придется новый контроллер корневого представления. Контроллер корневого представления может помочь управлять представлениями в вашей программе. В новой редакции Xcode 4.2 ожидается контроллер корневого представления.

В новой редакции в Empty Application отсутствует файл MainWindow.xib. Вместо этого AppDelegate создает окно. И он хочет контроллер корневого представления. Таким образом, лучший способ – создать подкласс UIViewController с XIB для интерфейса для MainWindow. Но в старом издании XIB не нужен.

Так получилось? Без контроллера корневого представления вы не получите ошибку, но вы вряд ли сможете что-то сделать без нее. Вот почему предупреждение всегда появляется.

  • Подключение элемента editButtonItem к UITableView
  • UILabel приводит к сбою приложения при добавлении к просмотру (только для Xcode 6 и iOS 8)
  • Как проверить ввод текстового поля в реальном времени?
  • Когда отказаться от подписки на NSNotification в UIView
  • Как UITableViewRowAnimationAutomatic определяет, какую анимацию использовать?
  • Как использовать свойство core Integer 64?
  • Может ли представленный контроллер просмотра также представлять собой контроллер представления?
  • Будет ли objectForKey объекта NSMutableDictionary: метод возвращать копию или сам объект?
  • Использование анимации для изменения страницы WebView
  • Какой самый простой способ изменить размер / оптимизировать размер изображения с помощью iPhone SDK?
  • Xcode 4 Поддерживаемые ориентации устройств
  • Давайте будем гением компьютера.