Проблема загрузки пера из UITabBarController - PullRequest
0 голосов
/ 31 марта 2011

Я пытаюсь загрузить перо из TabBarController.Я делаю это, назначая selectedIndex.ViewController, загруженный по индексу, указывается в MainWindow.xib, где находится TabBarController, присваивая имя пера, который будет загружен в каждом элементе панели вкладок.Загрузка работает, но если я создаю IBOutlet в ViewController для загрузки и связываю его с чем-либо (объект IBOutlet может быть любого класса), то он падает в строке, где я назначаю selectedIndex.

Редактировать >>У меня есть делегат приложения, который содержит UITabBarController, связанный с объектом UITabBarController, созданным в MainWindow.xib.

В этом объекте UITabBarController есть несколько элементов панели вкладок, каждый из которых связан с различными UIViewControllers.Эти ссылки устанавливаются через свойство NIB Name.

Я пытаюсь протестировать первый элемент, связывающий его с пустым UIViewController, который в этом случае я назвал TestViewController (TestViewController.h, TestViewController.m и TestViewController.xib созданы).Я написал TestViewController в свойстве NIB Name первого элемента панели вкладок.Это работает.

Теперь я поместил UILabel IBOutlet в TestViewController.Я определяю это так в TestViewController.h:

#import <UIKit/UIKit.h>


@interface TestViewController : UIViewController {
    UILabel *label;
}

@property (nonatomic, retain) IBOutlet UILabel *label;

@end

Затем я синтезирую объект метки в TestViewController.m.Я помещаю UILabel в TestViewController.xib.Это все еще работает.

Затем я связываю объект метки, определенный в TestViewController, с UILabel, который я создал в файле NIB.Я компилирую и тестирую.Не работаетСбой в той части, где я назначаю selectedIndex для UITabBarController, определенного в делегате приложения.Назначение сделано следующим образом:

self.tabBarController.selectedIndex = 0;

Я использую 0, потому что я тестирую только с первым элементом панели вкладок.Он падает с сигналом SIGABRT.

Есть идеи, почему это может произойти?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Проблема решена. Я забыл изменить UIViewController, связанный с элементом панели вкладок, на TestViewController.

0 голосов
/ 31 марта 2011

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

Вы нашли линию, которая вызывает сбой, и это хорошее начало.Поместите точку останова в эту строку и отладьте приложение.Когда вы достигнете точки останова, посмотрите на self.tabBarController.Это ноль?Если нет, сколько объектов находится в его массиве viewControllers?Если есть один или несколько, взгляните на свой TestViewController.Поместите точку останова в метод -loadView или UIViewController -loadView.Даже если вы не видите исходный код для - [UIViewController loadView], вы все равно можете наблюдать его эффект: к тому времени, когда вы доберетесь до конца метода, свойство view контроллера представления должно быть не нулевым.

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

...