Почему iOS 5.0 не любит приложения с обычными окнами? Почему он запрашивает использование контроллеров представления? - PullRequest
6 голосов
/ 18 декабря 2011

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

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

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

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

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

Ответы [ 3 ]

7 голосов
/ 18 декабря 2011

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

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

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

1 голос
/ 27 декабря 2011

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

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

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

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

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

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

1 голос
/ 23 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...