Изменение приложения для использования контроллера панели вкладок

#xcode #ios

#xcode #iOS

Вопрос:

Я создаю свое первое приложение для iPhone (используя XCode 4), и я изначально создал проект, используя шаблон приложения на основе навигации. С тех пор я решил, что хочу, чтобы в пользовательском интерфейсе была панель вкладок внизу и панель навигации вверху, но у меня возникли трудности с изменением моего приложения для этого.

Я добавил новое окно в свое приложение и назвал его TabWindow.xib. Я открыл это в Interface Builder и добавил контроллер панели вкладок. Затем я добавил свойство outlet для контроллера в AppDelegate.h следующим образом:-

 @property (nonatomic, retain) IBOutlet UITabBarController *tabController;
  

Это было синтезировано в AppDelegate.m со следующим:-

 @synthesize tabController=_tabController;
  

Затем я изменил код в applicationDidFinishLaunchingWithOptions на следующий (чтобы заменить старый контроллер просмотра моим новым):-

 //self.window.rootViewController = self.navigationController;
self.window.rootViewController = self.tabController;
  

Когда я запускаю приложение, вместо ожидаемого отображения панели вкладок я вижу пустое окно. Я подозреваю, что мне нужно (по крайней мере) подключиться к выходу tabController, который я создал выше, но я не могу понять, как это сделать. И есть ли что-нибудь еще, что мне нужно сделать, чтобы это заработало?

Ответ №1:

Вам нужно добавить подключение к делегату приложения в Interface Builder. Для этого добавьте «Объект» из библиотеки объектов и измените его класс на делегат вашего приложения. Затем добавьте соединения в инспектор подключений.

Кроме того, в вашем файле applications info plist вам, возможно, придется установить «Базовое имя основного файла nib» на новое имя xib.

Комментарии:

1. Я сделал, как вы предложили, и подключил tabController и оконные выходы, а также изменил базовое имя основного файла nib в файле plist, но я все еще вижу пустое окно. Одна вещь, которую я заметил, это то, что владелец файлов подключен к делегату приложения в исходном MainWindow.xib, но не в моем новом TabWindow.xib, но я не могу понять, как это установить. Если я нажму ctrl перетащу из объекта владельца файла в объект делегирования приложения, я не получу возможности подключиться к розетке.

2. После добавления «Объекта» из библиотеки объектов вы установили класс для «Объекта»? Вы должны сделать это из инспектора идентификации. В поле Пользовательский класс там должно быть указано значение класса делегата вашего приложения. Как только это будет сделано, вы сможете перетащить connect the delegate outlet к объекту класса делегата вашего приложения с помощью инспектора подключений.

3. Да, я это сделал. Извините, что не упомянул об этом в моем предыдущем комментарии.

4. У меня это работает. Я заметил, что классу владельца файла было присвоено значение «NSObject». Я изменил его на «UIApplication» и смог делегировать владельца файла с помощью упомянутого выше перетаскивания ctrl click. И теперь, когда я запускаю свое приложение, я вижу TabWindow, как и ожидалось. Спасибо, что указали мне правильное направление.

5. Здесь заканчиваются мысли. Можете ли вы проверить, является ли класс владельца вашего файла «UIApplication» в его инспекторе идентификации.