我是iOS编程的新手,我花了太多时间在一些应该相对容易实现的东西上。当然这是一个初学者的问题,但我似乎无法找到答案。
我目前正在开发iOS VoIP应用程序。在此阶段,只要设置了呼叫,系统就会切换到“CallingViewController”。每当呼叫断开时,视图应该消失(弹出)。
我的等级:
我认为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不会改变。
答案 0 :(得分:0)
我不能说这是否是导致问题的原因,而是根据文件
代表
pushViewController:animated:
方法
此对象不能是标签栏控制器的实例,它必须不在导航堆栈中。