Как заменить раскадровку на XIB?Замена раскадровки на XIB
При попытке создать динамические представления и их контроллеры я потерял все преимущества новой раскадровки. Теперь, пытаясь удалить его из проекта, я создал новый XIB со своим собственным контроллером и заменил его в настройках проекта:
Теперь при попытке запуска приложения он выходит из строя, и журнал показывает мне следующее :
2012-04-08 14:50:16.567 Bazaart[11340:15203] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIApplication 0x8c15c20> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'
Вот код: UIRootWindow:
#import <UIKit/UIKit.h>
@interface UIRootWindow : UIViewController
@end
И его соответствующая реализация:
#import "UIRootWindow.h"
@implementation UIRootWindow
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)viewDidUnload {
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
@end
EDIT:
У меня есть окно, предложенное Филлипом (см. Ниже). Но ... как я это делал, это не самое лучшее. Правильно ли я это делаю?
UIRootWindow *wnd = [[UIRootWindow alloc] init];
[wnd view];
[self setWindow:wnd.window];
Просто обратите внимание, что для будущей совместимости вы не должны запускать свои собственные имена классов с помощью 'UI' или' NS' (представьте, что в будущей версии SDK Apple вводит новый класс под названием 'UIRootWindow'). Используйте свои собственные префиксы, так что у вас будет что-то вроде 'URKRootWindow'. –