0

タブバーと多数のタブバー項目を備えたアプリがあり、それぞれに独自の VC があります。HOMEタブバービューには、UIButtonsプログラムで生成されたセットがあります。特定のボタン (「非表示ボタン」) が 1 つあり、それを押すと、他のボタンが無効/非表示になります。期待どおりに動作します。

ただし、2番目のタブバー項目をタップしてから元に戻って「ボタンを非表示」ボタンをタップすると、それらは表示/有効のままになります。「Hide Buttons」ボタンによって呼び出されるメソッドにブレークポイントを設定すると、ボタンの 1 つのメモリ アドレスが記録され、タブで別のビューに移動して戻った後、同じ UIButton メモリ アドレスが異なることに気付きます。理由がわからない。

これらUIButtonsはすべて@implementation、フォーム etc のブロック内の HOME VC で定義されUIButton *originalButton; UIButton *hideButtonsButton;、次のタイプのコードを使用して viewDidAppear: で初期化されます。

// ORIGINAL BUTTON TAG = 1
originalButton = [UIButton buttonWithType:UIButtonTypeCustom];
[originalButton addTarget:self action:@selector(originalButtonWasPressed:) forControlEvents:UIControlEventTouchUpInside];
originalButton.frame = CGRectMake(20.0, 30.0, 100.0, 39.0);
UIImage *originalButtonImage = [[UIImage imageNamed:@"originalreg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(18, 18, 18, 18)];
UIImage *originalButtonImageHighlight = [[UIImage imageNamed:@"originalregblue.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(18, 18, 18, 18)];
[originalButton setBackgroundImage:originalButtonImage forState:UIControlStateNormal];
[originalButton setBackgroundImage:originalButtonImageHighlight forState:UIControlStateHighlighted];
[self.view addSubview:originalButton];

任意のガイダンスをいただければ幸いです。

4

1 に答える 1

0

当たり前。ボタンの初期化メソッドの呼び出しを viewDidLoad と viewDidAppear に移動しました。今は大丈夫です。

于 2013-03-24T01:35:34.290 に答える