ナビゲーションバーの右上隅にログインボタンが必要な2つのViewControllerがあります。 viewController1#のviewDidLoadでカスタムrightBarButtonItemにアクセスできない
は、私は(略称)のようrightBarButtonItem
を設定:
// set up the login button on the right
UIButton *loginButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *loginImage = [UIImage imageNamed:@"btn_login.png"];
[loginButton setBackgroundImage:loginImage forState:UIControlStateNormal];
[loginButton setFrame:CGRectMake(0, 0, loginImage.size.width, loginImage.size.height)];
[loginButton setTag:1111111];
UIBarButtonItem *loginItem = [[UIBarButtonItem alloc] initWithCustomView:loginButton];
self.navigationItem.rightBarButtonItem = loginItem;
[loginItem release];
それは隠されたまたは可視する必要がある場合viewWillAppear
に、私は把握するviewWithTag:1111111
を使用できるように、私はそれをタグ付けユーザーがログインしているかどうかに基づいています。 viewController2をスタックにプッシュを取得したときに
((UIButton *)[self.navigationController.view viewWithTag:LOGIN_BUTTON_TAG]).hidden = true;
、私は基本的に私のrightBarButtonItem
を設定するために同じコードを実行し、私はそれを異なるタグ(すなわち、222222)を得ました。
私がviewWithTag:222222
を探すと、viewController2#viewWillAppearで、nullに戻りますので、表示/非表示できません。
私はviewController1(1111111)で使用したのと同じタグを使用しても、私はそれを知ることができます。
これはなぜですか?私のタグは実際にはファイルの先頭に定数として設定されているので、vc1の乱数をvc2にコピーするのは面白そうに思えます。代わりに、私はrightBarButtonItem
にvc2のタグが適用されない理由と、別のviewControllerにあるのにvc1のタグがまだ保存されている理由を理解したいと思います。チェックする
NSLog("View is %@", self.navigationController.view);
を置く
((UIButton *)[self.navigationController.view viewWithTag:LOGIN_BUTTON_TAG]).hidden = true;
:
私が最初に推測したのは、あなたが 'tag'を割り当てるときと' 'tag' – tipycalFlow
私の2番目の推測(深刻なもの)は、222222が整数オーバーフローを引き起こし、-123648か何かに変わるということです。 2222 – tipycalFlow
のような小さなタグを試してください。私のタグは、実際にはvc1では34590、vc2では234355です。私は1111111と222222を使用して、viewControllerの中にあるこの質問を明確にしました。 – djibouti33