2015-12-14 3 views
2

Я новичок в команде StackOverflow и очень долго боролся с этой проблемой, надеясь, что кто-то там может помочь и указать мне в правильном направлении.Загрузка пользовательского TableViewCell из раскадровки вместо nib

Я пытаюсь сделать обычай UITableView и пользовательский UITableViewCell - они оба собираются вместе, чтобы сформировать пользовательский UITableView, который я бы хотел использовать повторно для нескольких проектов. Так что я пытаюсь сделать инкапсуляцию всей обработки строки + клавиатуры и т. Д. В пользовательском UITableView, а вид ячейки в пользовательском UITableViewCell.

В новом StoryBoard я добавил UIViewController и добавил UITableView, спроектировал, как я хотел, чтобы таблица выглядела и добавляла к ней прототипную ячейку. Я разработал это с соответствующими метками, полями и ограничениями. Давайте позвоним в эту таблицу пользовательских взглядов «MyCustomTableWithCustomCell»

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

Я нашел одно решение (спасибо StackOverflow!), Но это не совсем то, что я хотел:

  • Я извлек клетку прототип из MyCustomTableWithCustomCell (вырезать и вставить в пустой документ Interface Builder) и сохранил его как xib.
  • Затем я использую это в моем обычае UITableView через registerNib()
  • я могу создать новый UIViewController в любой раскадровке, добавить UITableView, установите его класс MyCustomTableWithCustomCell и он будет делать то, что я хочу

Проблема в том, что мне не нравится, как ячейка находится в отдельном файле xib, так как она не может быть легко просмотрена через разные размеры устройства с помощью автоматического предварительного просмотра IB. Независимо от того, какой размер устройства я выбираю, он всегда выглядит одинаково. Также сложно понять, как дизайн подходит для остальной части экрана, если я не буду создавать и просматривать в Simulator каждый раз, когда я хочу что-то изменить. Я бы предпочел, чтобы дизайн ячейки мог оставаться частью прототипа TableViewCell внутри раскадровки. Тогда я мог бы легко изменить его, просмотреть по разным размерам устройств и т. Д.

Итак, мой вопрос: какой лучший способ сделать то же самое, но вместо использования xib-файла, используя ячейку Prototype Table из раскадровки как план. Или, другими словами, есть способ извлечь ячейку Prototype в Nib во время выполнения, чтобы я мог зарегистрировать ее, когда создаю свою собственную таблицу.

Например. что-то вроде:

var myTableCellNib = myStoryBoard.myViewController.myTableView.myPrototypeCell.getNib() 
    registerNib(myTableCellNib) 

С нетерпением ждем ваших мыслей!

ответ

0

Сделать UITableViewCell Swift файл -

import UIKit 

    class ClassName: UITableViewCell { 

    @IBOutlet weak var lblData: UILabel! 


    override func awakeFromNib() { 
     super.awakeFromNib() 


    } 

    override func setSelected(selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 

     // Configure the view for the selected state 
    } 

} 

Перейти к раскадровке -> View Controller -> Table View -> Перетаскивание вид ячейки таблицы и дизайн его, дать имя класса в качестве ClassName и идентификатора.

Перейти к cellForRowAtIndexPath

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    var cell : ClassName! = tableView.dequeueReusableCellWithIdentifier("identifier") as! ClassName 
    cell.lblData.text = "" 
    return cell as ClassName 
} 
+0

Спасибо, что нашли время ответить! Но на самом деле, не делал бы этого так, значит, каждый раз, когда я хочу использовать свой собственный дизайн ячеек, мне придется копировать и вставлять всю ячейку в новое представление таблицы? В то время как то, что я хочу, - это просто установить новый класс tableview для моего пользовательского класса, и все затем создается программно через наконечник (этот наконечник читается из моей раскадровки). Я хочу, чтобы дизайн ячейки таблицы был повторно использован и загружался через один источник (например, в настоящее время xib-файл, но предпочел бы из раскадровки) – swiftcoder

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