2015-09-22 4 views
0

Приложение работает именно так: UITableView, который показывает всех маяков, которые находятся в одном и том же диапазоне. Затем пользователь может выбрать один маяк. В следующем UITableVi я хочу показать маяк, который они выбрали, вся информация о маяке, одна из этих данных - это RSSI, который меняет значение каждые 0.2 сек. Я передаю информацию на следующую страницу, как это.Показать только одну ячейку UITableView

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Tag"]; 

    AXABeacon *beacon = [[AXABeacon alloc] init]; 
    beacon = [self.sortedDevices objectAtIndex:indexPath.row]; 

    if([_beaconSelected.name isEqualToString:beacon.name]) 
    { 
     UILabel *titleLabel = (UILabel *)[cell viewWithTag:1]; 
     UILabel *uuidLabel = (UILabel *)[cell viewWithTag:2]; 
     UILabel *rssiLabel = (UILabel *)[cell viewWithTag:3]; 
     UILabel *majorLabel = (UILabel *)[cell viewWithTag:4]; 
     UILabel *minorLabel = (UILabel *)[cell viewWithTag:5]; 

     titleLabel.text = [NSString stringWithFormat:@"%@", beacon.name]; 
     uuidLabel.text = [NSString stringWithFormat:@"%@", beacon.uuidString]; 
     rssiLabel.text = [NSString stringWithFormat:@"RSSI: %@", [beacon.rssi stringValue]]; 
     minorLabel.text = [NSString stringWithFormat:@"Minor: %@", beacon.minor]; 
     majorLabel.text = [NSString stringWithFormat:@"Major: %@", beacon.major]; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

     uuidLabel.adjustsFontSizeToFitWidth = YES; 
     titleLabel.adjustsFontSizeToFitWidth = YES; 
     cell.accessoryType = UITableViewCellAccessoryNone; 
    } 

    return cell; 
} 

Вот как я это сделал в данный момент. Это работает, но проблема в том, что этот метод продолжает поиск о маяках, и когда он находит другой маяк, он показывает пустую ячейку. Я не хочу, чтобы он показывал другие ячейки. Я хочу, чтобы он показывал только информацию о выбранном маяке. Как мне это сделать?

+1

Итак, почему вы используете представление таблицы, когда у вас есть только один элемент для отображения? – Wain

+0

Зачем вам использовать представление таблицы только с одной ячейкой? Почему не простой контроллер просмотра с необходимыми ярлыками? И почему этот контроллер представления, используемый для отображения деталей одного устройства, имеет ссылку на несколько устройств? – rmaddy

+0

Проблема у меня сейчас, я должен показать RSSI, который меняет его значение каждые 0.2 сек. RSSI такой же, как и когда пользователь выбрал маяк из первого UITableView и сохранил его. Я хочу, чтобы объект постоянно обновлял свою информацию. @maddy –

ответ

0

Если вы действительно хотите использовать UITableView для деталей, я бы фильтровать маяки в этом методе:

- (void)locationManager:(CLLocationManager*)manager 
    didRangeBeacons:(NSArray*)beacons 
      inRegion:(CLBeaconRegion*)region 
{ 
    [yourMutableArray removeAllObjects]; 
    for (int i = 0; i < [beacons count]; i++) { 
     // Compare major/minor of selected beacon with all beacons 
     // and store detail information only for one specific beacon 
     // to some custom object. Add this object to NSMutableArray 
     // and use it as a data source for table view. 
     NSString *major = [NSString stringWithFormat:@"%@", [(CLBeacon *)[beacons objectAtIndex:i] major]]; 
     NSString *minor = [NSString stringWithFormat:@"%@", [(CLBeacon *)[beacons objectAtIndex:i] minor]]; 
     if ([major isEqualToString:_selectedMajor] && [minor isEqualToString:_selectedMinor]) { 
      FoundBeacon *b = .... 
      [yourMutableArray addObject:b]; 
     } 
    } 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [yourMutableArray count]; 
} 

Или вы можете просто переместить ваш «вернуть клетку;» если блокировать и поставить «return nil»; в конце, снаружи, если блок, где у вас есть «вернуть ячейку» сейчас.

+0

Ваш 'numberOfRowsInSection' даже не будет компилироваться. – rmaddy

+0

Спасибо @rmaddy, исправлено. –

+0

Я вернул нуль, где у меня есть ячейка возврата, но я получаю эту ошибку '2015-09-22 19: 27: 33.858 AXASDK [3870: 847430] *** Завершение приложения из-за неотображенного исключения« NSInternalInconsistencyException », причина:« UITableView () не удалось получить ячейку из своего источника данных () ''@JosefRysanek –

Смежные вопросы