2013-03-26 10 views
0
BGLogin * login = [[BGLogin alloc]init]; 

[nav pushViewController:login animated:YES]; 
login.view; //access it once to trigger didload 
NSAssert(login.navigationItem==login.navigationItemAtDidload,@"They should be the same");//View didload isn't called yet here. 
NSAssert(login.navigationController == nav,@"The navigation controller should be the same"); 
NSAssert(nav.navigationBar.topItem==login.navigationItem,@"We just push our self so our stuff should be on top"); 

Это простой код. Однако, если я не делаю login.view, тогда viewDidLoad не будет вызываться первым. Если я сделаю login.view, я получил предупреждение о том, что значение login.view не используется.Как обеспечить, чтобы viewDidLoad вызывался без предупреждения?

Итак, что мне делать?

ответ

1

Если вы просто хотите использовать login.view; сделать viewDidLoad назвать, я думаю, вам лучше добавить некоторый код в BGLogin classs init метода.

, такие как:

- (id)init 
{ 
    // your code 

    self.view.tag = 0; 
    return self; 
} 

или вы можете изменить ваш login.view; к login.view.tag = 0;

он будет вызывать viewDidLoad, но я не думаю, что это лучше, но это будет работать для вас, может быть, кто-то имеет лучший способ справиться с этим

+0

Почему downvote? Разве ответ не подходит? Если вы уменьшите, по крайней мере, комментарий, чтобы я мог улучшить пост. –

2

Если вы не заботитесь о возвращаемом значении, то не используйте синтаксис доступа к свойствам (login.view). Вызовите геттер, как обычный метод: [login view].

Смежные вопросы

 Смежные вопросы