Как подключить MainWindow.xib к пустому проекту - PullRequest
3 голосов
/ 10 сентября 2011

Начиная с XCode 4.2, когда вы создаете пустой проект с использованием XCode 4.2, файл MainWindow.xib больше не создается и не подключается для вас. Я нашел статью, в которой описывается, как это сделать, и я сделал это, и это работает, но если этот процесс научил меня чему-либо, это показало, что я понятия не имею, как main (), AppDelegate и MainWindow. xib существуют вместе.

http://www.trappers.tk/site/2011/06/16/mainwindow-xib/

  • Почему класс MainWindow.xib обновляется до UIApplication?
  • Почему объект помещается в xib, а затем для него выбирается класс AppDelegate?
  • Почему выход делегата владельца файла подключен к объекту AppDelegate?
  • Почему окно приложения AppDelegate к окну?
  • почему - (BOOL) приложение: didFinishLaunchingWithOptions: необходимо закомментировать.

Я исследовал все вокруг, но я все еще не уверен на 100%, как все загружается после запуска приложения, и зачем нужна эта настройка, чтобы иметь MainWindow. Однако у меня есть чувство, что мне, вероятно, следует разобраться во всех этих концепциях, чтобы продолжить развитие iOS.

Ответы [ 2 ]

4 голосов
/ 10 сентября 2011
  • Почему класс MainWindow.xib обновляется до UIApplication?

На самом низком уровне файлы пера загружаются с помощью метода - [UINib instantiateWithOwner: options:]. Владелец файла в nib-файле является заполнителем. В XCode это еще не конкретный объект. Он преобразуется в реальный объект при загрузке файла пера. Его цель состоит в том, чтобы связать через выходы и действия объекты внутри пера с объектом, который загрузил перо. Объект, переданный как параметр "instantiateWithOwner:" этого метода UINib, - это то, к чему разрешит местозаполнитель Владелец файла в Интерфейсном Разработчике.

UIApplication загружает файл пера, указанный в файле info.plist, и передает значение self для параметра owner при загрузке файла пера.

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

  • Почему объект помещается в xib, а затем для него выбирается класс AppDelegate?

Когда вы помещаете универсальный объект в xib и изменяете его класс на «AppDelegate», вы говорите Xcode создать экземпляр экземпляра «AppDelegate» при загрузке файла.

  • Почему выход делегата владельца файла подключен к объекту AppDelegate?

У UIApplication есть «делегат», которому он делегирует ответственность и уведомляет, когда происходят интересные события. Когда вы устанавливаете это соединение, вы устанавливаете свойство делегата приложения в качестве экземпляра, который вы указали выше. С этого момента этот экземпляр будет получать сообщения делегата от UIApplication, например -application: didFinishLaunchingWithOptions:.

  • Почему окно приложения AppDelegate к окну?

Розетки - это способ ссылки на объекты внутри XIB. Они приводят к тому, что свойства или переменные экземпляра устанавливаются так, чтобы они ссылались на объект, на который указывает выход. Когда вы делаете это, вы делаете так, чтобы созданный вами экземпляр делегата приложения мог ссылаться на окно, которое также создается при загрузке xib.

  • почему - (BOOL) приложение: didFinishLaunchingWithOptions: необходимо закомментировать.

Он представляет собой ориентированный на код способ выполнения некоторых из тех вещей, которые происходят в xib, и если бы они оба присутствовали, они бы перезаписывали друг друга.

0 голосов
/ 10 сентября 2011

Объект, помещенный в файл XIB, представляет собой AppDelegate, поскольку он делегирует все соединения в Интерфейсном Разработчике. Это означает, что если вы напишите метод, который при нажатии кнопки отображает текст, этот метод будет подключен либо к Делегату приложения, либоВладелец файла, предпочтительно делегат.Владелец файла, поскольку он является приложением UIA, подключается к делегату, поскольку он назначает этот определенный объект делегатом приложения.Извините, что я не смог ответить на остальные ваши вопросы, они на самом деле не имели смысла.

Надеюсь, это поможет

...