1

ビュー コントローラ A、B、C の 3 つがあります。A と B の両方がビュー コントローラ C を提示します。どのビュー コントローラがビュー コントローラ C を提示したかを知るにはどうすればよいですか?

PS:どのビュー コントローラーがコントローラー C を提示したかを判断したら、いくつかのボタンを非表示/非表示にしたいと考えています。

4

4 に答える 4

2

viewController のintプロパティをとして設定するだけです。View Controller を から表示すると、に設定されます。を意味する場合は、 に設定します。表示後、View Controller が callを取得すると、このメソッドで に基づいて、その特定のボタンを非表示または表示できます。[これは単純なハックです:)]CfromViewControllerA1B2CviewWillAppearfromViewController

Cの viewWillAppear.. のコード

if ( self.fromViewController == 1) // Set from viewController while you create C in A Controller
{
 [_hButton setHidden:YES];

}

else if ( self.fromViewController == 2) 
{
  [_hButton setHidden:NO];
}
于 2013-04-24T09:56:41.593 に答える
0

モーダル ビュー コントローラーを提示しているので、モーダルに提示されているか、ナビゲーション スタックにプッシュされているかに関係なく、現在のビューのコントローラーを提供するvisibleViewControllerプロパティに関心があるでしょう。

Cを表示する前にvisibleViewController.nibNameを変数に保存し、Cが表示された後にvisibleViewController.nibNameがAまたはBと等しいかどうかを確認します:)

//before presenting VC C
appdelegate.myController = self.navigationcontroller.visibleViewController.nibName;

//after VC C is presented
if([appdelegate.myController isEqualToString:@"A"]) {

    //Write your code
}
else {
    //Write other code 
}
于 2013-04-24T10:01:20.773 に答える
0

C は A や B を気にするべきではありません。代わりに、A と B に、ボタンを表示するかどうかを指示する状態を C に設定させるか、C がボタンを表示するかどうかを尋ねることができるように、C のデリゲートとして設定します。 . いずれにしても、C を変更せずに、他のビュー コントローラーから C を使用できます。

于 2013-04-24T10:01:45.227 に答える
0

さまざまな方法で実行できます。C ビュー コントローラーで Boolean/anyType 変数を宣言できます。セグエを使用して C ビューコントローラーを表示している場合は、その変数に必要な値を設定し、C ビューコントローラーのロード中にその変数を使用できます。

セグエを使用している場合の例。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     if ([segue.identifier isEqualToString:@"AtoC"]) {
            C *cobj = [segue destinationViewController];
            cobj.variable =TRUE;
    }else
   {
      cobj.variable=FALSE;
   }
}
于 2013-04-24T10:00:03.580 に答える