检测可达性

时间:2013-01-23 06:28:57

标签: iphone ios objective-c xcode

我有从Apple采用的Reachability类。我的问题是在我的ListViewController中实现我的可访问性检测,而不是在Apple中显示的ReachabilityAppDelegate中。我的问题:

  1. 我想链接(UITableViewCell *)tableView中的调用方法:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath和可达性检测

  2. 我正在尝试禁用我的单元格,如果它们检测到它未连接并启用单元格(如果它) 已连接

  3. 这是在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");
      

      }

1 个答案:

答案 0 :(得分:0)

你可以像这样编码,添加一个实例var BOOL _isOffline 在课堂上和updateInterfaceWithReachability:方法

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

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

你应该添加你的代码来处理单元格,可能是

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