2013-07-11 3 views
0

Прежде всего, я новичок, поэтому у меня могут быть неправильные понятия.Как добавить/подключить NIB к программно созданному UINavigationController?

Это мой код в AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    UIViewController *viewController = [[UIViewController alloc] initWithNibName:@"FirstView" bundle:nil]; 
    self.navigationController = [[UINavigationController alloc] initWithRootViewController: viewController]; 

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    self.window.backgroundColor = [UIColor whiteColor]; 
    self.window.rootViewController = self.navigationController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

Идея заключается в том, чтобы программно добавить UINavigationController, но затем использовать .xib (далее "FirstView" paremeter) взглядов. У меня нет проблем с программным созданием представлений, но для более простых интерфейсов я предполагаю, что использование IB также может быть выполнено.

Однако, когда я запускаю код, я получаю эту ошибку:

2013-07-11 21:20:42.644 new-book-proto-01[64308:11303] *** Terminating app due 
to uncaught exception 'NSInternalInconsistencyException', reason: 
'-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "FirstView" nib 
but the view outlet was not set.' 

Что я должен делать? Что-то не хватает?

Кроме того, что-то вроде этого распространено в разработке iOS? Это плохая практика? Есть лучший способ сделать это?

+3

В файле FirstView.xib проверьте, установлено ли в представлении просмотра свойство вида FileOwner или нет? – Mrunal

+0

@ Mrunal прав, это звучит так, как будто здесь проблема. Все остальное выглядит правильно. –

+0

@Mrunal Как мне это сделать? Я еще не совсем знаком с пользовательским интерфейсом XCode. – hfz

ответ

2

Это причина, как сказано: «Причина: „- [UIViewController _loadViewFromNibNamed: связка:] загружен „FirstView“ перо но выход вид не был установлен“ "

Это означает, что вы пытаетесь получить доступ или получить значение для некоторых взглядов (элементы пользовательского интерфейса), который не имеет IBOutlet в своем классе контроллера или нет у них вид на все

Вы должны создать IBOutlets (свойства) для каждого (каждый элемент пользовательского интерфейса представляет собой вид), который вы хотите «видеть» в своем контроллере

+0

Привет, спасибо за ответ. Так что проблема с элементами пользовательского интерфейса, которые у меня есть, а не с их родительским представлением? Кроме того, я создаю IBOOutlets программно или через интерфейс Xcode? – hfz

Смежные вопросы