我是iOS编程新手,我花了太多的时间在应该相对容易实现的事情上。这当然是初学者的问题,但我似乎找不到答案。
我目前正在开发一个iOS VoIP应用程序。在这个阶段,无论何时设置呼叫,系统都会切换到"CallingViewController“。每当调用断开时,视图就会消失(pop)。
我的等级:
- 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),系统可以确定呼叫状态(callId)已更改为“设置”,并将推动(在AppController中) [self.navigationController pushViewController:CallingViewController animated:YES];。
通过相同的回调函数,系统还将确定调用已经结束。然而,使用popViewController或任何变体,它都不起作用。ViewController保持在顶端。我开始使用NSLog进行日志记录,结果显示为CallingView: loads、威尔出现、未出现和将消失。然而,DidDisappear不会被调用。该系统还确定呼叫被终止,再次通过NSLog进行检查。因此,不管我使用什么代码来摆脱CallingViewController,都会执行(似乎),但是视图不会改变。
发布于 2012-08-09 08:12:08
我不能说这是否是你问题的原因,但根据文档
为
pushViewController:animated:方法
此对象不能是选项卡条控制器的实例,而且它不能已经在导航堆栈上。
https://stackoverflow.com/questions/11878711
复制相似问题