我正在构建一个使用蓝牙进行通信的应用程序,我有一个名为EAController
(NSObject)的类来处理附件委托。
因此,如果手机丢失了蓝牙通信,则会在EAController中调用附件委托方法,我可以在其中显示警报。我想做的是当丢失通信时,显示警报并返回初始视图控制器。
我知道我可以添加通知,并让所有视图控制器监听,并且当前视图控制器可以处理“返回第一视图控制器”操作。
但是我的应用程序有很多视图控制器,所以有什么方法可以通过EAController
类返回初始视图控制器吗?
感谢。
答案 0 :(得分:0)
在您的应用代表处理通知。
答案 1 :(得分:0)
你的解释有点模糊,一些代码可能会帮助我更好地理解问题,但听起来像UINavigationController popToRootViewControllerAnimated:
可能就是你想要的。
如果EAController是一个UIViewController,并且已经添加了导航控制器,它应该有一个导航控制器的引用来调用该方法。
答案 2 :(得分:0)
如果您使用的是UINavigationController
,那么我们就可以了
-popToRootViewControllerAnimated:
方法
答案 3 :(得分:0)
如果您正在处理故事板和segues,您应该查看展开 segues。网上有几个很好的教程,例如。
http://cocoatouch.blogspot.nl/2013/02/unwinding-segues-in-storyboard.html
答案 4 :(得分:0)
if you are using UInavigationController:
for(UIViewController* vc in self.navigationController.viewControllers) if([vc isKindOfClass:FirstViewController]
{
[self.navigationController popToViewController:vc anmated:YES];
break;
}
答案 5 :(得分:0)
popToRootViewControllerAnimated:
会做你想要的。如果您在代码的一部分中无法直接访问UINavigationController
,则可以推送事件并配置导航控制器以接收它。像这样:
你的导航控制器在哪里:
UINavigationController *navController = [[UINavigationController alloc] init];
// subscribe to the notification
[[NSNotificationCenter defaultCenter] addObserverForName:@"goBack!"
object:nil
queue:nil
usingBlock:^(NSNotification *notification) {
// pop!
[navController popToRootViewControllerAnimated:YES];
}];
现在,代码中的其他地方......当你想要回去时这样做:
// post the notification
[[NSNotificationCenter defaultCenter] postNotification:
[[NSNotification alloc] initWithName:@"goBack!"
object:nil
userInfo:nil]];