Подтвердить что ты не робот

Раскадровка iOS5: повторное использование пользовательского UITableViewCell в нескольких UITableViewControllers

Использование динамического, пользовательского прототипа ячеек, который я проектирую, например, UITableViewController A (в построителе интерфейсов/раскадровки), отлично работает с удалением ячейки (через свой идентификатор cellA) и таких в cellForRow... Я использую пользовательский класс (подкласс UITableViewCell, пусть он назовет его MyCustomCell), чтобы связать ярлыки и большой палец изображения, и он работает очень хорошо и прямо в моем UITableViewController A.

Теперь я создаю UITableViewController B (в раскадровке), который имеет точно такой же дизайн/функциональность для своих пользовательских ячеек (динамических ячеек). Поэтому я переключаю класс этих ячеек на MyCustomCell и присваиваю ему новый идентификатор cellB.

В UITableViewController B я деактивирую ячейку в cellForRow... и использую новый идентификатор cellB. Примечание. Использование cellA приводит к сбою, более или менее явно.

Но когда отображается представление таблицы при запуске приложения, UITableViewController A работает просто отлично, а почти идентичный UITableViewController B не работает (пустые ячейки),

В Storyboard это выглядит немного не так, потому что пользовательская ячейка может быть назначена в UITableViewController A, но в UITableViewController B, это просто простая, простая ячейка, Несмотря на класс, связанный с MyCustomCell.

Как избежать копирования и прикрепления этих ячеек к другому контроллеру (и, следовательно, сильно перемещаться между копиями при внесении изменений в дизайн) - и, скорее, просто правильно использовать его повторно?

4b9b3361

Ответ 1

То, что вы делаете, правильно. Я не знаю, почему он не работает, может быть, некоторые проблемы с перезагрузкой tableview; обратитесь к источнику данных и к источнику данных.

- (NSInteger) tableView:(UITableView *) tableView numberOfRowsInSection:(NSInteger) section

скорее то, что вы можете сделать: перетащите

ViewController

а затем перетащите a

TableView

и сделать его динамичным и сделать то, что вы делали раньше; это работало отлично для меня, когда я сделал это сам.

Ответ 2

Высказывание ячейки из вашего пользовательского класса не означает, что она "спроектирована" одинаково. То, что вы на самом деле пытаетесь достичь здесь (и то, что я ищу), является королем "Содержимого" соты, но это можно сделать только с ContainerViewController в iOS 6, я думаю. Другой вариант - использовать XIB для одной ячейки - это должно работать так же хорошо, но тогда вы теряете преимущества наличия обзора в раскадровке.

Ответ 3

У меня была аналогичная проблема, я создал пользовательскую ячейку с uitextfield внутри нее. Он хорошо работал в первом столе, но не во втором. Я понял, что делегат текстового поля не подключен к пользовательской ячейке. Я связал эти два в раскадровке, установив соединение с делегатом делегатов текстовых полей обратно в текстовое поле.