【问题标题】:How to chain modal views from a controller launched from UITabBarController如何从从 UITabBarController 启动的控制器链接模态视图
【发布时间】:2011-03-18 01:09:16
【问题描述】:

如何从 UITabBarController 的视图中链接多个模态控制器? Apple 的 View Programming Guide 说这是可行的,但是当我尝试这样的任务时,我得到了错误,

"*Assertion failure in -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:], /SourceCache/UIKit_Sim/UIKit-1447.6.4/UIWindowController.m:186

类层次结构是这样的:

UITabBarController -> 1 个子是 UIViewController 继承的类,命名为 Tab1Controller。

Tab1Controller -> 编排需要以模态方式呈现的 2 个控制器中的每一个。 启动 1 个模态 UIViewController,当它完成时(通过回调调用),将其关闭,然后启动另一个模态 UIViewController。

好像两个模态控制器结束和开始之间没有足够的时间。

是否有任何示例代码显示如何将一个模态控制器串联起来?

【问题讨论】:

    标签: iphone uiviewcontroller uitabbarcontroller


    【解决方案1】:

    查看我对这个 SO 问题的回答:

    Correct way of showing consecutive modalViews

    【讨论】:

      【解决方案2】:

      好像两个模态控制器结束和开始之间没有足够的时间。

      我认为你已经一针见血了。在前一个模态视图控制器消失之前,您无法呈现新的模态视图控制器,并且在已被旧模态视图覆盖的视图控制器上调用 viewDidAppear: 方法。

      另一种选择是在第一个模式视图之上显示第二个模式视图,例如

      [firstModalViewController presentModalViewController:secondModalViewController animated:YES]
      

      然后您可以调用[firstModalViewController dismissModalViewControllerAnimated:YES] 来关闭第二个(返回到第一个),或调用[self dismissModalViewControllerAnimated:YES] 来同时关闭两者。

      【讨论】:

        【解决方案3】:
        // present modal view inside another presented modal view
        
            FirstViewController *firstVC = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
            UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: firstVC];
        
            // Note: you can use your viewcontroller instead self.window.rootViewController
        
            [self.window.rootViewController presentViewController:navController animated:YES completion:^{
                        //code...
                            SecondViewController *secondVC = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
        
                            [navController presentViewController: secondVC animated:YES completion:nil];
        
                        }
                    }];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-19
          相关资源
          最近更新 更多