2016-08-21 7 views
1

У меня проблема, которая была задана здесь UITableViewCell outside of UITableView, но не имеет правильного ответа, кроме как «это не очень хорошая идея».Показать ячейку вне UITableView

Я хочу загрузить содержимое cellView вне таблицыView (пример ситуации - когда пользовательская ячейка щелчка переходит к новому представлению таблицы, где эта ячейка действует как часть headerView).

Резолюция, предложенная в теме я обеспечил связь была:

То, что я сделал загружен в клетку из его кончика пера, установить его, а затем добавили contentView клетки к моему новый толкаемый вид. Это приводит к такому же эффекту .

Я пытался загрузить ячейку с помощью MyUITableViewCell(), MyUITableViewCell(style:, reuseIdentifier: nil), но каждый раз, когда я пытаюсь вызвать любой объект внутри клетки (например, кнопка) я получаю аварии, что объект является nil, так что это означает, что ячейка не загружена от ниба.

Я не могу инициализировать ячейку через MyUITableViewCell(nib: nib, bundle: nil), потому что у нее нет таких инициализаторов.

Как я могу загрузить содержимое ячейки в любом другом виде? Как я могу «настроить»?

ответ

4

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

Objective-C:

CustomClass *cell = (CustomClass *)[[[NSBundle mainBundle] loadNibNamed:@"nibName" owner:self options:nil] firstObject] 

Swift:

let cell = NSBundle.mainBundle().loadNibNamed("nibName", owner: self, options: nil).first as! CustomClass 

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

Причина, по которой методы init не работают, состоит в том, что представление никогда не получает ни одного из своих IBOutlets, инициализированных из nib, поэтому все свойства вашей ячейки для точек вывода равны нулю.

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