UITableViewCell Nib из NSString

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

Благодарю.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if([[Tutortrackinbud[indexPath.row] valueForKey:@"reply"] isEqual: @"N"]) { nib = @"ReviewCell1"; } else{ nib = @"ReviewCell2"; } static NSString *simpleTableIdentifier = nib; ReviewCell1TableViewCell *cell = (ReviewCell1TableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; if (cell == nil) { NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:nib owner:self options:nil]; cell = [nibArray objectAtIndex:0]; } if ([[Tutortrackinbud[indexPath.row] valueForKey:@"stars"] isEqual: @"1"]){ NSLog(@"1"); cell.star1.image = [UIImage imageNamed:@"star.png"]; cell.star2.image = [UIImage imageNamed:@"greystar.png"]; cell.star3.image = [UIImage imageNamed:@"greystar.png"]; cell.star4.image = [UIImage imageNamed:@"greystar.png"]; cell.star5.image = [UIImage imageNamed:@"greystar.png"]; cell.star6.image = [UIImage imageNamed:@"greystar.png"]; } else if ([[Tutortrackinbud[indexPath.row] valueForKey:@"stars"] isEqual: @"2"]){ NSLog(@"2"); cell.star1.image = [UIImage imageNamed:@"star.png"]; cell.star2.image = [UIImage imageNamed:@"star.png"]; cell.star3.image = [UIImage imageNamed:@"greystar.png"]; cell.star4.image = [UIImage imageNamed:@"greystar.png"]; cell.star5.image = [UIImage imageNamed:@"greystar.png"]; cell.star6.image = [UIImage imageNamed:@"greystar.png"]; } else if ([[Tutortrackinbud[indexPath.row] valueForKey:@"stars"] isEqual: @"3"]){ NSLog(@"3"); cell.star1.image = [UIImage imageNamed:@"star.png"]; cell.star2.image = [UIImage imageNamed:@"star.png"]; cell.star3.image = [UIImage imageNamed:@"star.png"]; cell.star4.image = [UIImage imageNamed:@"greystar.png"]; cell.star5.image = [UIImage imageNamed:@"greystar.png"]; cell.star6.image = [UIImage imageNamed:@"greystar.png"]; } else if ([[Tutortrackinbud[indexPath.row] valueForKey:@"stars"] isEqual: @"4"]){ NSLog(@"4"); cell.star1.image = [UIImage imageNamed:@"star.png"]; cell.star2.image = [UIImage imageNamed:@"star.png"]; cell.star3.image = [UIImage imageNamed:@"star.png"]; cell.star4.image = [UIImage imageNamed:@"star.png"]; cell.star5.image = [UIImage imageNamed:@"greystar.png"]; cell.star6.image = [UIImage imageNamed:@"greystar.png"]; } else if ([[Tutortrackinbud[indexPath.row] valueForKey:@"stars"] isEqual: @"5"]){ NSLog(@"5"); cell.star1.image = [UIImage imageNamed:@"star.png"]; cell.star2.image = [UIImage imageNamed:@"star.png"]; cell.star3.image = [UIImage imageNamed:@"star.png"]; cell.star4.image = [UIImage imageNamed:@"star.png"]; cell.star5.image = [UIImage imageNamed:@"star.png"]; cell.star6.image = [UIImage imageNamed:@"greystar.png"]; } else if ([[Tutortrackinbud[indexPath.row] valueForKey:@"stars"] isEqual: @"6"]){ NSLog(@"6"); cell.star1.image = [UIImage imageNamed:@"star.png"]; cell.star2.image = [UIImage imageNamed:@"star.png"]; cell.star3.image = [UIImage imageNamed:@"star.png"]; cell.star4.image = [UIImage imageNamed:@"star.png"]; cell.star5.image = [UIImage imageNamed:@"star.png"]; cell.star6.image = [UIImage imageNamed:@"star.png"]; } cell.reviewdate.text = [Tutortrackinbud[indexPath.row] valueForKey:@"date"]; cell.reviewtext.text = [NSMutableString stringWithFormat:@"%@ -%@",[Tutortrackinbud[indexPath.row] valueForKey:@"desc"],[Tutortrackinbud[indexPath.row] valueForKey:@"username"]]; //cell.tutortext.text = [NSMutableString stringWithFormat:@"%@ -%@",[Tutortrackinbud[indexPath.row] valueForKey:@"desc"],[Tutortrackinbud[indexPath.row] valueForKey:@"username"]]; cell.tutortext.text = @"this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test"; return cell; } 

В моих проектах я часто делаю базовую ячейку с такими методами класса:

 + (NSString *)reuseIdentifier { return NSStringFromClass([self class]); } + (UINib *)nibName { return [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil]; } 

И все остальные подклассы ячеек от него и используют его таким образом, где это необходимо:

  [self.tableView registerNib:[UINib nibWithNibName:[FeedCell nibName] bundle:nil] forCellReuseIdentifier:[FeedCell reuseIdentifier]]; 

Надеюсь, поможет)

Вы должны зарегистрировать свой файл viewDidLoad предпочтительно в своем viewDidLoad

Образец кода :

 UINib *cellNib = [UINib nibWithNibName:@"MyCustomCell" bundle:nil]; [self.tableView registerNib:self.cellNib forCellReuseIdentifier:@"CustomCell"]; 

а затем используйте dequeueReusableCellWithIdentifier как вы уже делали. вы можете зарегистрировать несколько файлов nib с разными идентификаторами и просто удалить их в cellForRowAtIndexPath с их уникальными идентификаторами.

Я предлагаю, а затем несколько файлов xib вам нужно создать один файл xib и вы получите объект из NSArray .

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *simpleTableIdentifier = nib; ReviewCell1TableViewCell *cell = (ReviewCell1TableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; if (cell == nil){ NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:nib owner:self options:nil]; if([[Tutortrackinbud[indexPath.row] valueForKey:@"reply"] isEqual: @"N"]){ cell = [nibArray objectAtIndex:0]; }else{ cell = [nibArray objectAtIndex:1]; } } return cell; } 
  • Переопределяющий метод с селектором "tableview: cellForRowAtIndexPath
  • Пользовательский UITableViewCell показывает неправильные значения
  • Центрирование UIImageView в UItableViewCell не работает, как исправить?
  • UITableView numberOfSectionsInTableView и numberOfRowsInSection, называемое трижды при начальной загрузке
  • Как выбрать программные ряды uitableview
  • Как перезагрузить данные TableView после передачи данных Segue
  • Как мы можем загружать изображение, которое яблоко делает в своем магазине приложений?
  • Изменение цвета представления в ячейке tableview не изменяет
  • Можно ли в гнездах собирать коллекции / таблицы в iOS?
  • IOS - лучший способ стилизации ячейки UITableView с интерфейсом Builder
  • Динамическая высота UILabel с UIImageView Постоянная высота
  • Давайте будем гением компьютера.