2015-10-02 4 views
0

У меня есть контроллер tableviewcontroller, подключенный к настольному представлению. Я хочу иметь пользовательский тип ячейки в представлении таблицы. Пользовательская ячейка должна иметь три UILabels и UIImageView.Пустые ячейки прототипа в раскадровки

Я разработал пользовательскую ячейку в виде таблицы (используя ячейку прототипа) в раскадровке. Я создал подкласс UITableViewCell и связал ячейку прототипа с этим классом. Я также установил идентификатор повторного использования ячейки как «ItemCell».

В UITableView У меня есть кнопка добавления. Когда я нажимаю эту кнопку, в таблицу просмотра должны быть добавлены новые ячейки (пользовательские ячейки). Они (я могу сказать по тому, что я могу их выбрать), за исключением того, что они пусты (хотя на ярлыке должно отображаться что-то). Метка подключена к подклассу UITableViewCell как свойство IBOutlet и имеет серый фон, поэтому я вижу его рамку, но все, что я вижу, это белая строка.

Что случилось?

Это метод viewDidLoad от UITableViewController.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self.tableView registerClass:[ItemCell class] forCellReuseIdentifier:@"ItemCell"]; 
    self.navigationItem.title = @"Home"; 
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
                          target:self 
                          action:@selector(addNewItem:)]; 
    self.navigationItem.leftBarButtonItem = self.editButtonItem; 
} 

Это код метода cellForRowAtIndexPath:.

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

    cell.nameLabel.text = @"hello"; 

    return cell; 
} 
+1

Если вы создаете ячейку на раскадровке, вам не нужно регистрировать ее самостоятельно. – Abizern

ответ

1

Если вы используете прототип клетки, то можно указать идентификатор повторного использования в раскадровке и клетки распакованы оттуда. Называя этот код:

[self.tableView registerClass:[ItemCell class] forCellReuseIdentifier:@"ItemCell"]; 

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

Удалите эту строку кода для исправления.

+0

Это сработало. Не могу поверить, что все было так просто. Спасибо! –

+0

Заметили что-то странное. Раньше (когда я использовал обычные ячейки) я мог нажать на один из них, чтобы представить другой контроллер вида с деталями ячеек с помощью навигационного контроллера. Теперь, когда я нажимаю на пользовательскую ячейку, он сместил два одинаковых контроллера вида справа. Почему два? Раньше он работал хорошо. –

+0

Я думаю, у вас может быть segue, связанный с прототипом, а также реализовать метод делегата, чтобы что-то нажать? – Wain

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