我想知道是否有可能在不使用AppDelegate类的情况下从任何屏幕检测到网络连接的变化,或者在从AppDelegate类更改视图后返回到之前的版本?
目前我正在使用AppDelegate在检测到网络连接时显示警报并点击确定将视图更改为新视图,但是从新视图中点击后退按钮后我无法返回上一个视图在导航栏中。
AppDelegate不允许我使用
之类的东西推送视图[self.navigationController pushViewController:reviewCtrl animated:YES];
如何返回显示警报的上一个视图?
答案 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。