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 に答える