Загрузка приложения xib приводит к сбою

Привет всем, у меня возникла проблема с отображением файла xib из основного файла, не знаю, почему это происходит с некоторыми файлами xib, а не с другими.

if(segment == @"1"){
    Results1 *myView1 = [[Results1 alloc]initWithNibName:@"Results1" bundle:nil];
    [self.view addSubview:myView1.view];
}else if(segment == @"2"){
    Results2 *myView2 = [[Results2 alloc]initWithNibName:@"Results2" bundle:nil];
    [self.view addSubview:myView2.view];
}else if(segment ==@"3"){
    Results3 *myView3 = [[Results3 alloc]initWithNibName:@"Results3" bundle:nil];
    [self.view addSubview:myView3.view];
}else if(segment ==@"4"){
    Results4 *myView4 = [[Results4 alloc]initWithNibName:@"Results4" bundle:nil];
    [self.view addSubview:myView4.view];
}

Мой код открывает первые файлы xib, но не остальные. Я не уверен, почему я добавил файлы .h:

#import "Results1.h"
#import "Results2.h"
#import "Results3.h"
#import "Results4.h"

приложение оказывается в этой строке при отладке:

@autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([TestTypingToolAppDelegate class]));
}

а потом он вылетает, кто-нибудь знает?


person Tim    schedule 10.08.2012    source источник
comment
как называются файлы xib? какие объекты являются результатами? был ли view подключен к свойству view в каждом контроллере представления? много-много непонятно, чтобы выяснить причину крушения.   -  person holex    schedule 10.08.2012
comment
Это может не помочь в этом случае, но использование == для сравнения строк по своей сути неправильно, если только вас не интересуют адреса объектов. Переключитесь на isEqualToString:.   -  person Phillip Mills    schedule 10.08.2012
comment
Не знаете, как подключить представление? Но первый работает, и все они одинаковы, поэтому я предположил, что все они должны работать, когда я иду, бросаю код, он видит, какой xib он должен загрузить, но он просто не загружается.   -  person Tim    schedule 10.08.2012
comment
@ Тим, ты должен подключить их вручную. ты уже сделал это?   -  person holex    schedule 10.08.2012


Ответы (3)


Тим, вот картинка из Interface Builder, может она тебе поможет:

введите здесь описание изображения

person holex    schedule 10.08.2012
comment
пожалуйста! хороших выходных, не переутомляйтесь. :) - person holex; 10.08.2012

Вам нужно посмотреть на вывод консоли, когда приложение перенесет вас на эту строку в файле main.m. Для меня это всегда было ошибкой с моей стороны, причем наиболее распространенной ошибкой было 1) Файл не существует (Results1.xib) или 2) я забыл установить выход для просмотра. Как я уже упоминал, подробности из исключения в выводе консоли помогут вам.

person Joe    schedule 10.08.2012

Имейте в виду, что иногда при загрузке представления происходит сбой на устройстве, но не в симуляторе. В этой ситуации убедитесь, что при вызове:

 initWithNibName:@"YourNibName";

что регистр вашей строки имени пера точно такой же, как файл пера. Симулятор игнорирует случаи, но устройство требует точного совпадения (довольно раздражает)

person lohiaguitar91    schedule 10.08.2012