2011-11-12 9 views
2

私はこのコードを使用して別のView Controllerのボタンを隠していますが、他のView Controllerのボタンを隠すためにボタンが押されてもボタンは隠されません。別のビューコントローラでボタンを非表示にするにはどうすればいいですか?

これは私が他のビューコントローラでボタンを非表示にするには使用していますコードです:

[self dismissModalViewControllerAnimated:YES]; 

    NSLog(@"Exited"); 

    ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 

    [vc.mainbutton1 setHidden:YES]; 

はなぜこれが動作しませんか?

ありがとうございます!

+0

シナリオの説明からは明らかではありません。しかし、私があなたを正しく理解すれば、代議員を設定する必要があります。 vcという名前のViewControllerのインスタンスをインスタンス化し、[vc.mainbutton1 setHidden:YES]を試しただけでは表示されません。この新しく作成されたvcは、mainbutton1を非表示にしたいのと同じViewControllerインスタンスではないためです。 – user523234

答えて

4

ViewControllerコントローラでBOOL変数を使用してプロパティを作成し、合成します。 これを行います。 viewDidLoad 書き込みビューコントローラこの

if(self.check) 
    [mainbutton1 set hidden:YES]; 
+1

あなたが私の答えが好きなら、正しい答えとしてそれを作る – Tendulkar

+0

それはちょうどアプリが起動されたときにロードされたときにボタンを隠していないでしょうか?私は他のビューコントローラでボタンが押されたときだけボタンを隠す必要があります... – pixelbitlabs

+0

詳細を理解できません – Tendulkar

0

ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
vc.check = YES; 

あなたがalloc'dと、適切に実際の要素をのViewControllerをinit'dているにもかかわらず、ので、これは働いていない理由は、そのvc ViewController(mainbutton1を含む)がまだロードされていません。

ヒットマンは正しいアイデアを持っています(私は彼の考えを投票しています)。

どちらのビューが表示されたときに隠されたにmainButton1を設定するためのBOOLプロパティに入れ、または明示的に(アニメーションやサブビューを追加したり、何でも経由)ビューを表示後に[mainButton1 setHidden: YES]を呼び出します。あなたの質問から

0

それはあなたのコードでは、あなたが観察し、新しいもの

ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
[vc.mainbutton1 setHidden:YES]; 

ビューコントローラのどちらかを作成しているのに対し、既存のビューコントローラでボタンを非表示にするように聞こえるものではありませんメインボタン1のコンセントが正常に接続されていないと思われます。メモリアドレスを記録することで、メモリコントローラが予期したものであるかどうかを確認できます。

NSLog(@"Hid button for view controller %p", vc); 

そして、私はあなたがしようとしていることを推測するつもりですあなたのコードから判断

...しない限り、他の回答が動作するはずのViewController

NSLog(@"In viewDidAppear for view controller %p", self); 
1

のviewDidAppearコールバックで同じことをやってモーダルビューを表示したviewController上のボタンを隠すには?

これが正しければ、使用する既存のviewControllerではないViewControllerという新しいインスタンスを作成しているときに、何をしているのかは機能しません。

提示されたモーダルビューから[self dismissModalViewControllerAnimated:YES];に電話するといいですが、私はアップルのutitliyアプリテンプレートのように解雇を処理する代理人を設定する傾向があります。

0

何か他の場所で発生している場合は、特定のボタンを非表示にしたいと思われます。

あなたは、例えば、AppDelegateの変数を使ってこれを制御することができます(ただし、あまり気にしません)。

「何かが」「どこか」が起こっている、これを行う:あなたのボタンが表示されたりするかどうかを判断するために、この値を使用することができますに後で新しいのViewControllerを作成するときに、次に

MyAppDelegate *appDelegate = [[(MyAppDelegate *)UIApplication sharedApplication] delegate]; 
appDelegate.shouldHideThatOtherButtonLater = YES; 

をこのようにしない:

ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 

MyAppDelegate *appDelegate = [[(MyAppDelegate *)UIApplication sharedApplication] delegate]; 
[vc.mainbutton1 setHidden: appDelegate.shouldHideThatOtherButtonLater ]; 

をあなたは、この場合にはそのshouldHideThatOtherButtonLater-プロパティを作成し、合成することで、このために、あなたのAppDelegateを準備する必要があります。

関連する問題