2012-08-10 5 views
-1

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

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 [email protected]"3"){ 
    Results3 *myView3 = [[Results3 alloc]initWithNibName:@"Results3" bundle:nil]; 
    [self.view addSubview:myView3.view]; 
}else if(segment [email protected]"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])); 
} 

а затем он падает, у кого есть идеи?

+0

Каковы имена файлов 'xib'? какие объекты есть _Results_? имеет ли 'view' соединение с свойством' view' в каждом контроллере представления? многие, многие вещи не ясны, чтобы выяснить причину аварии. – holex

+1

В этом случае это может не помочь, но использование '==' для сравнения строк по своей сути неверно, если вы не заинтересованы в адресе объектов. Переключитесь на 'isEqualToString:'. –

+0

Не знаете, как подключить представление? Но первый работает, и они все одинаковы, поэтому я предположил, что все они должны работать, когда я иду, бросил код, он видит, что xib он должен загрузить, он просто не загружается. – Tim

ответ

0

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

enter image description here

+0

Это было спасибо – Tim

+0

добро пожаловать! хорошо провести выходные, не работайте слишком усердно. :) – holex

0

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

0

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

initWithNibName:@"YourNibName"; 

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