2015-09-27 2 views
0

Я создаю tableView из набора различных классов наследования, но я не могу понять, что является лучшим способом добавить их все в tableView без создания нескольких массивов , что не является идеальным?Несколько классов наследования в таблицеView

Возьмем, к примеру, классический пример, как бы я мог бы добавить несколько разных объектов кошки и собаки в tableView? Каков наилучший способ сделать это?

class Pet { 
    var id: Int = 0 
    var name: String = "" 

} 

class Dog: Pet { 
    var Type: String = "" 
} 

class Cat: Pet { 
    var Type: String = "" 
} 

ответ

0

Самый простой способ, чтобы отразить модель в вашем слое UI. как:

class PetTableViewCell { 
} 

class DogTableViewCell: PetTableViewCell { 
} 

class CatTableViewCell: PetTableViewCell { 
} 

И использовать затем их в вашем представлении таблицы: this answer показывает использование двух различных типов клеток в UITableView

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

protocol MyTableViewCellDisplayable { 
    var Type: String 
    var Pic: Image 
    var Name: String 
} 

class MyTableViewCell { 
    func displayObject(obj: MyTableViewCellDisplayable); 
} 

class Pet: MyTableViewCellDisplayable { 
} 

class Dog: Pet { 
} 

class Cat: Pet { 
} 
... 

Выбор правильного решения действительно зависит от ваших конкретных требований.

+0

все данные в таблицеView будут из класса Pet, а не из подкласса, нужно ли тогда делать подклассы? –

+0

Нет - из подклассов. Они наследуют реализацию протокола, возможно, используют без изменений, возможно, переопределяют его. –

+0

y okay Я предполагаю, что главной проблемой будет, например, сортировка этих разных объектов, например, с датой в объекте Pet? –

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