【问题标题】:Automatically FirstView controller calls second view controller in viewdidAppear自动 FirstView 控制器在 viewdidAppear 中调用第二个视图控制器
【发布时间】:2010-10-04 08:44:08
【问题描述】:

我在标签栏中的导航控制器中使用 2 个视图。在导航中的第一个视图控制器应该自动调用第二个视图控制器而不显示第一个视图控制器(通过在 viewdidAppear 上推送 pushviewcontroller)。

问题是当我第一次单击标签栏时,它会转到第二个视图控制器,而没有正确显示第一个视图。但是当我再次按下标签栏时,它会显示第一个带有过渡样式的视图(popviewcontroller)。

谁能告诉我我做错了什么?

提前致谢

问候, 萨蒂什

【问题讨论】:

    标签: iphone uitabbarcontroller popviewcontroller


    【解决方案1】:

    如果您使用 initWithNibName 创建视图控制器,请使用 viewDidLoad 事件而不是 viewDidAppear。

    【讨论】:

    • 我正在以编程方式调用视图控制器
    • 使用 -(void)loadView 代替 viewDidLoad
    • 事情是每次都应该刷新所以只有我保持第一个视图控制器作为初始化控制器
    • 似乎点击标签总是调用poptorootviewcontroller。您可以使用 - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 的 UITabBarController 委托方法并从此处处理行为,可能会在此方法返回 YES 之前再次推送您的第二个控制器。我不知道如何停止poptoroot,但我认为这可能是一个解决方法。
    【解决方案2】:

    只需在 -(void)ViewwillAppear:(BOOL)Animated 中调用第二个视图控制器就不会出现任何问题

    【讨论】:

      【解决方案3】:

      你为什么要这样做?

      确实将第二个视图添加为子视图,或者如果您确实必须将其放入viewWillAppear:(BOOL)animated - 但每次调用它确实效率低下。但同样,你为什么要将一个视图控制器推到另一个视图控制器上?!为什么不直接将第二个视图控制器设为根视图控制器?

      【讨论】:

      • 我在我的应用程序中使用 kal 日历。问题是我每次都必须通过获取当前值并放入 NSUserDefault 并再次调用根控制器来显示它来刷新页面。所以首先将控制器视为初始化控制器。第二个控制器显示日历控件
      猜你喜欢
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多