Зареждането на 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
@Tim, трябва да ги свържете ръчно. направи ли го вече?   -  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