如何从NSObject类中显示UiviewController?

时间:2013-05-22 14:23:30

标签: core-bluetooth

我正在使用核心蓝牙框架。在这个应用程序中,我不得不将多个蓝牙设备与iPhone连接,当蓝牙设备超出范围时,它会显示警报。

我希望显示UIViewController,而不是这个警告。所有警报的编码都在NSObject类上处理。

这是我要显示的屏幕,而不是AlertView

enter image description here

3 个答案:

答案 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调用视图,所以我认为这是解决此类问题的最佳方法。