0

让我解释。我有多个UIViewControllers. 在我的 3 上MainPageController,我有 3 个 UIView。让我们这样枚举:第一个 UIView 被调用LoginView,第二个被调用HomeView,另一个被调用RegView。现在HomeView,有多个按钮会通向其他UIViewControllers. 例如,一个按钮将导致StoreController. 现在,如果我在里面StoreController并且想回到MainPageController,我只需调用:

[self dismissModalViewControllerAnimated:YES completion:nil]

这将把我送回HomeView.

那很好。但是,在 内部StoreController,有一些按钮可以将我定向到LoginViewRegView,无论哪个按钮被点击。问题是当方法时[self dismissModalViewControllerAnimated:YES completion:nil],它只会带我回到HomeView,无论我按下哪个按钮。

dismissModalViewControllerAnimated那么一旦被调用,我将如何显示正确的 UIView呢?

编辑:

这就是我显示 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,并且只能是一个,因此理想的方法是告诉 navigationController 使用您想要的 viewController 进行初始化。

例如,在 regButton 上单击呈现的 modalview

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

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