3

アプリが常にreachability変更をリッスンし、に従ってビューを更新する必要があります。network statusを使用することを考えておりnotificationcenter、すべてのビューに変更をリッスンさせますが、これを実装する方法がわかりません。

の使い方は知っていますがnotificationcenterReachabilityを実装する場所が見つからないようですReachability check

ネットワークの変更をどこで確認し、他の人に通知する必要がありViewControllersますか?

AppDelegate私は適切な場所ではないと思います。ViewControllerにチェックを入れると、ネットワークチェックは「アクティブ」であるReachability限り実行されます。ViewController

4

2 に答える 2

1

「シングルトン」Reachabilityを作成し、アプリの起動時に初期化します。

シングルトンに到達可能性を定期的にチェックさせます(例:NSTimer。次に、に登録されている他のアクティブなビューに通知できますNSNotificationCenter

// AppDelegate.m: 

@property (nonatomic, strong) Reachability *reachability;

// in applicationDidFinishLaunching...
self.reachability = [[Reachability alloc] init]; 

// Reachability.m

-(id)init {
   self = [super init];
   if (self) {
     [self setupTheTimer];
   }
   return self;
}
于 2013-01-07T11:03:01.257 に答える
0

NSObjectすべてのネットワークチェックを処理するシングルトンクラスを作成します。

NetworkCheckerのように名前を付けます。

NetworkCheckerDelegate次のようなメソッドを使用して、コールバックのデリゲートを作成します。

@protocol NetworkCheckerDelegate <NSObject>

-(void)networkStatusUpdated:(NSInteger)networkStatus;

@end

@interface NetworkChecker : NSObject
{
    id<NetworkCheckerDelegate> networkDelegate;
}

ネットワークチェックを開始するメソッドを追加し、次のようにデリゲートを追加します。

+(void)updateNetworkWithDelegate:(id<NetworkCheckerDelegate>)delegate
{
    networkDelegate = delegate;

    //Set timer to do Reachability checks
}

-(void)timerIsCompleted
{
    //Do Reachability check

    if( newNetworkState != oldNetworkState ){
        [networkDelegate networkStatusUpdated:newNetworkState];
    }
}

次に、ViewController必要なそれぞれで実行できます(viewDidLoadでこれを実行します)。

[NetworkChecker updateNetworkWithDelegate:self];

そして、ネットワークステータスが変更された後に何かを行うために以下を実装します。

-(void)networkStatusUpdated:(NSInteger)networkStatus
于 2013-01-07T11:00:14.800 に答える