2013-01-23 73 views
0

我有從蘋果公司採用的可達性類。我的問題是在我的ListViewController中實現可達性檢測,而不是在Apple顯示的ReachabilityAppDelegate中。我的問題:檢測可達性

  1. 我想在(的UITableViewCell *)的tableView鏈接調用方法:(UITableView的 *)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath和可達性檢測

  2. 我想禁用我的手機,如果他們發現沒有連接,如果
    連接

這在viewDidLoad中編碼使細胞:

[[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object: nil]; 

的reachabilityChanged如下:

-(void) reachabilityChanged: (NSNotification*)note{ 
    Reachability* curReach = [note object]; 
    NSParameterAssert([curReach isKindOfClass:[Reachability class]]); 
    [self updateInterfaceWithReachability: curReach]; 
} 

如何實現在我UITableViewCells的禁用

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
  • 注意到,我在上面的方法進行編碼的:

    NSInteger row = [indexPath row]; 
        NSString *contentForThisRow = nil; 
    
        static NSString *MyIdentifier = @"MyIdentifier"; 
    
        if (tableView == [[self searchDisplayController] searchResultsTableView]) { 
         // Sort search results in alphabetical order 
         NSArray *sorted = [searchResults sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 
         contentForThisRow = [sorted objectAtIndex:row]; 
        }else { 
         contentForThisRow = [nameArray objectAtIndex:row]; 
        } 
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
    
         if (cell == nil) { 
          cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier]autorelease]; 
         } 
         // Set Device names into Cells 
         cell.textLabel.text = contentForThisRow; 
         cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    NSLog(@"Load cell done"); 
    

    }

+0

你可以試試https://github.com/GlennChiu/GCNetworkReachability這個更好一點。 – Maximilian

+0

謝謝。但我仍然不知道如何通過我的項目來實現它。我對客觀的c還是新的。 – MrExperimental

+0

從網站上下載,上面有一個說拉鍊的按鈕。然後將這兩個文件拖到應用程序項目中並確保正在編譯.m文件(在構建階段和編譯源代碼下),然後在要添加類型#import「」的類中導入它,並將其導入 – Maximilian

回答

0

,你可以像這樣的代碼,在您的-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

你應該添加的代碼添加一個實例變種BOOL _isOffline 中的類,在你updateInterfaceWithReachability:方法

- (void)updateInterfaceWithReachability:(Reachability*)curReach 
{ 
    if(curReach == XXXXNotReachable) 
    { 
     //your code 
     _isOffline = YES; 
    } 
    else 
    { 
     _isOffline = NO; 
    } 
    [_tableView reloadData]; 
} 

處理該單元格,可能是

if(_isOffline) 
{ 
    cell.userInteractionEnabled = NO; 
} 
else 
{ 
    cell.userInteractionEnabled = YES; 
} 
+0

謝謝。但是什麼xxxNotReachable?這與「無法達到」相同嗎? – MrExperimental

+0

@MrExperimental是的,它的NotReachable枚舉,因爲Reachability不同版本的NotReachable enum'name是不同的,所以xxxNotReachable是你的不可達枚舉的名字。 –

+0

_tableview是什麼?它會提示錯誤。 – MrExperimental