0

説明させてください。複数ありUIViewControllersます。私MainPageControllerの には、3 つの UIView があります。このように列挙してみましょう: 最初の UIView は と呼ばれLoginView、2 番目は と呼ばれHomeView、もう 1 つは と呼ばれRegViewます。ではHomeView、他の につながる複数のボタンがありますUIViewControllers。たとえば、1 つのボタンは につながりますStoreControllerStoreController中にいて に戻りたい場合はMainPageController、次のように呼び出します。

[self dismissModalViewControllerAnimated:YES completion:nil]

これで に戻りますHomeView

それはいいです。ただし、 の内部には、またはのいずれかのボタンがタップされStoreControllerていると思われるボタンがあります。問題は、メソッドが、どのボタンを押しても、に戻るだけであることです。LoginViewRegView[self dismissModalViewControllerAnimated:YES completion:nil]HomeView

では、呼び出されたら正しい UIView を表示するにはどうすればよいでしょdismissModalViewControllerAnimatedうか?

編集:

これは私がUIViewsを表示する方法です:

-(void)viewDidLoad
{
  //Initialize the views here...
}

-(void)showViewByTag:(NSInteger)tag
{
   if (tag == 1)
   {
     [self.view addSubview:loginView];
   }
   else if (tag == 2)
   {
     [self.view addSubview:homeView];
   }
   else
   {
     [self.view addSubview:regView];
   }
}

showViewByTag:ここで、ビューを表示するためにコードのどこかでメソッドを呼び出します。

4

2 に答える 2

1

あなたが試すことができることは次のとおりです。呼び出す前に[self dismissModalViewControllerAnimated:YES completion:nil](したがって、ホームビューに戻ります)、に現在表示されているビューを変更しますMainPageController

[(MainPageController*)self.presentingViewController showViewByTag:desiredViewTag];
[self dismissModalViewControllerAnimated:YES...];

キャストが心配で、場合self.presentingViewControllerによってはそれが MainPageController 型ではないことが予想される場合は、その型を明示的に確認できます。

if ([self.presentingViewController isKindOf:[MainPageController class]])
    [(MainPageController*)self.presentingViewController showViewByTag:desiredViewTag];
[self dismissModalViewControllerAnimated:YES...];

これをコンパイルするには、MainPageController.h をモーダル コントローラー クラスにインポートする必要があります。

于 2012-10-16T10:42:36.803 に答える
0

dismissModalViewControllerは、それを提示したviewControllerを常に戻しますが、これは1つだけである可能性があるため、navigationControllerに目的のviewControllerを初期化するように指示するのが理想的な方法です。

たとえば、regButtonで、表示されたモーダルビューをクリックします

RegViewController *regViewController = [[RegViewController alloc]initWithNibNam:@"RegViewController" bundle:nil];

[self.navigationController initWithRootViewController:regViewController];
于 2012-10-16T10:35:31.337 に答える