Будучи новым для Cocoa, у меня есть несколько проблем с Interface Builder
, UIViewController
и друзьями.
У меня есть подкласс UIViewController
с UIView
, определенный в xib, и с выходом контроллера, подключенным к представлению. Xib "владелец файла" установлен как подкласс myViewcontroller.
В этом одном экземпляре следующий код для загрузки контроллера/представления (из главного контроллера представления) работает не так, как ожидалось:
if ( self.myViewController == nil )
{
self.myViewController = [[MyViewController alloc]
initWithNibName:@"MyViewController" bundle:nil];
}
[self.navigationController
pushViewController:self.myViewController animated:YES];
В методах MyViewController я разместил точки останова и сообщения журнала, чтобы узнать, что происходит:
-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
NSLog(@"initWithNibName\n");
}
return self;
}
-(void)viewDidLoad {
[super viewDidLoad];
NSLog(@"viewDidLoad\n");
}
Ожидаемый результат
Вызываются как методы -initWithNibName
, так и -viewDidLoad
, и отображается представление myViewController.
Наблюдаемый результат
Вызывается только -initWithNibName
, представление не отображается.
Я что-то пропустил? Может кто-нибудь порекомендовать что-нибудь проверить? (В частности, в удивительно непрозрачном инструменте интерфейса Builder).