Будучи новым для Cocoa, у меня есть несколько проблем с Interface Builder
, UIViewController
и друзьями.UIViewController -viewDidLoad не называется
У меня есть подкласс 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).
Связанный вопрос: http://stackoverflow.com/questions/1479576/viewdidload-not-called-in-subclassed-uiviewcontroller – Casebash
у вас возникли проблемы с друзьями? – Marty