PopViewController无效

时间:2012-08-09 07:34:21

标签: ios uiviewcontroller uinavigationcontroller pushviewcontroller popviewcontroller

我是iOS编程的新手,我花了太多时间在一些应该相对容易实现的东西上。当然这是一个初学者的问题,但我似乎无法找到答案。

我目前正在开发iOS VoIP应用程序。在此阶段,只要设置了呼叫,系统就会切换到“CallingViewController”。每当呼叫断开时,视图应该消失(弹出)。

我的等级:

  • 窗口
    • navigationController:UINavigationController(window.rootViewController)
      • AppController:UIViewController(navigationController.rootView)
        • TabBarController:UITabBarController
          • DialerViewController:UIViewController
        • LoginViewController:UIViewController
        • CallingViewController:UIViewController

我认为AppController是基于所有VoIP相关编码触发的状态和事件加载和隐藏视图的类。

例如在AppController中我使用 [self.navigationController pushViewController:tabBarController animated:YES]; 。推动控制器似乎不会导致任何问题,一切都按预期运行。

推送tabBarController会导致DialerView获得焦点(它现在是te标签中的唯一视图,稍后它将包含:拨号器,设置,联系人,呼叫历史记录)。用户输入一个号码并按“VoIP呼叫”。通过回调(voiplibrary-> OnCallStateChange - >最终AppController.OnCallStateChange),系统可以确定Call(callId)的状态已经改为“SET UP”并将推送(在AppController中) [self.navigationController pushViewController:CallingViewController animated:YES];

通过相同的回调函数,系统还将确定呼叫已结束。然而,使用popViewController或任何变体,它不起作用。 ViewController保持领先。我开始使用NSLog进行日志记录,看起来CallingView:loads,willappear,确实出现并且会消失。然而,DidDisappear不会被调用。系统还确定呼叫已终止,再次通过NSLog进行检查。因此,无论我用来摆脱CallingViewController的代码都会被执行(看起来如此),但View不会改变。

1 个答案:

答案 0 :(得分:0)

我不能说这是否是导致问题的原因,而是根据文件

代表

pushViewController:animated:

方法

  

此对象不能是标签栏控制器的实例,它必须不在导航堆栈中。