2017-02-19 4 views
0

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

enter image description here

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

+0

Что вы пытаетесь сделать? Вы можете объяснить? У вас есть ссылка на то, что вы хотите? Можете ли вы объяснить некоторые варианты использования? Из описания вопроса вы не можете точно понять, что вы спрашиваете. – Adeel

+0

@Adeel Что я хочу сделать, так это добавить ячейки с их значением, именем и счетом. Поскольку у меня много объектов, мне понадобится цикл для добавления ячеек. – iamhx

+0

Вам просто нужно получить объекты из coredata с использованием предикатов. Затем в методе _cellForRow: _ вы решите, какую ячейку вы должны вернуть. Если вы хотите группировать ячейки определенных типов вместе, вы можете использовать несколько разделов. Если вы хотите использовать только один раздел, вы можете запросить объекты из coredata на основе атрибутов и добавить их в массив. Что вы пробовали до сих пор и какую проблему вы не можете решить? – Adeel

ответ

1

Вы должны ввести UITableViewDataSource. См. API Reference для получения дополнительной информации. При использовании Core Data с UITableView s вы также можете посмотреть NSFetchedResultsController.

+0

Эй, ребята, все в порядке. Я как бы застрял в методе заполнения форм C# Windows Form для заполнения данных в виде сетки (в данном случае - в виде таблицы). Не знал, что метод добавления ячеек настолько сложный для iOS. – iamhx

1

Вам необходимо использовать методы UITableViewDataSource. Добавьте протокол данных в свой класс и совместите с ним. Метод, который вы ищете:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

Вы, вероятно, также хотят, чтобы соответствовать протоколу UITableViewDelegate.

ли что-то вроде этого:

class MyClass: UITableViewDataSource, UITableViewDelegate { 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
//Do your thing 
} 

//Conform to rest of the delegate and datasource methods too. Click on UITableViewDataSource to see the documentation 
1

Вы должны реализовать override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int и return ваши объекты подсчет массива, а затем установить идентификатор повторного использования для ячейки и добавить код:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") //replace "Cell" with your identifier 
    cell.textLabel = yourTitleArray[indexPath.row] 
    cell.detailTextLabel = yourSubtitleArray[indexPath.row] 
    return cell! 
} 

Дон» t забыть заменить yourTitleArray и yourSubtitleArray с вашими массивами.

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