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 的值。

所以我该怎么做?

4

2 回答 2

2

如果您不关心返回值,则不要使用属性访问器语法 ( login.view)。像常规方法一样调用 getter [login view]:.

于 2013-03-26T08:14:45.780 回答
1

如果您只想使用login.view;viewDidLoad调用,我认为您最好在您的BGLogininit方法中添加一些代码。

如 :

- (id)init
{
    // your code

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

或者你可以改变你login.view;login.view.tag = 0;

它会调用viewDidLoad,但我不认为它更好,但它会为你工作,也许有人有更好的方法来处理它

于 2013-03-26T07:56:41.007 回答