如何从AppDelegate返回上一个视图?

时间:2013-12-04 18:59:41

标签: ios objective-c

我想知道是否有可能在不使用AppDelegate类的情况下从任何屏幕检测到网络连接的变化,或者在从AppDelegate类更改视图后返回到之前的版本?

目前我正在使用AppDelegate在检测到网络连接时显示警报并点击确定将视图更改为新视图,但是从新视图中点击后退按钮后我无法返回上一个视图在导航栏中。

AppDelegate不允许我使用

之类的东西推送视图
[self.navigationController pushViewController:reviewCtrl animated:YES];

如何返回显示警报的上一个视图?

2 个答案:

答案 0 :(得分:0)

 I'm wondering if it's either possible to detect a change in network connection from
 any screen without using the AppDelegate

是的,可以使用Reachability,

这是文档https://developer.apple.com/Library/ios/samplecode/Reachability/Introduction/Intro.html

这些是一些有用的链接:

https://github.com/tonymillion/Reachability

http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-detecting-network-changes-with-reachability/

答案 1 :(得分:0)

编写UIViewController类别来处理警报是有意义的。类似的东西:

// UIViewController+NetworkChangeHandler.h
@interface UIViewController(NetworkChangeHandler)

- (void) networkChanged;

@end

// UIViewController+NetworkChangeHandler.m
@implementation UIViewController(NetworkChangeHandler)

- (void) networkChanged {
// display an alert

#if DEBUG
if (!self.navigationController) {
    NSLog(@"No navigation controller for %@", NSStringFromClass([self class]);
    return;
}
#endif

[self.navigationController pushViewController:someViewController animated:yesOrNo];

使用Category,您可以在检测到更改时从AppDelegate上的任何UIViewController(您可能想要最顶层)调用networkChanged。