我正在使用核心蓝牙框架。在这个应用程序中,我不得不将多个蓝牙设备与iPhone连接,当蓝牙设备超出范围时,它会显示警报。
我希望显示UIViewController,而不是这个警告。所有警报的编码都在NSObject类上处理。
这是我要显示的屏幕,而不是AlertView
答案 0 :(得分:1)
如果我正确理解了你的问题,你需要在NSObject子类的对象中引用一个活动的UIViewController。 因此,当实例化当前处理AlertView的NSObject时,它会向活动的UIViewController发送一个引用,如果你从活动的UIViewController实例化它,那就是这样的:
NSObjectSubclass *alertViewHandler = [[NSObjectSubclass alloc] init];
[alertViewHandler setActiveViewController:self];
然后在您的alertViewHandler中,而不是显示警报,您可以执行此操作:
[activeViewController presentViewController:viewControllerToPresent animated:YES completion:nil];
您的问题还有更多不同的解决方案,但由于信息有限,我只能猜出哪一种最适合您。
答案 1 :(得分:1)
另一种方法:
- 在您的通信类上创建一个代表
- 将ViewController设置为其委托
- 在外围设备断开连接时告诉代表,它将显示您的自定义屏幕...
答案 2 :(得分:0)
同样每个问题都有一个解决方案,考虑到这一点,我尝试并找到了解决方案
要从NSObject显示UiViewController - 我使用App Delegate Class中的引用,因为AppDelegate有自己的UIViewController,我使用我的UIViewController的wind覆盖。
在上面的例子中,我不能使用pushViewController或PresentViewController,因为所有功能都在ViewController中工作,因为我必须从NSObject调用视图,所以我认为这是解决此类问题的最佳方法。