Позвольте мне дать простое объяснение того, как таблицы работают в iOS.Каждая таблица имеет 2 основных компонента: отображаемые данные и представление (отображение) таблицы.Данные являются источником информации таблицы.В качестве источника данных вашей таблицы может использоваться любой тип источника данных (статическая информация, например NSString
, массивы, изменяемые массивы, словари ...).Точный тип вашего источника данных зависит от самого приложения.
Эти данные должны просматриваться пользователем, и это роль UITableView
.Код, который отвечает за загрузку данных в представление, всегда находится внутри функции tableView:cellForRowAtIndexPath:
.В этой функции вы выполняете загрузку и также указываете некоторые свойства представления, такие как тип ячеек, стиль таблицы ...
Теперь загрузка выполняется точно в том же порядке источника данных (если вы не укажетепо-другому).Поэтому, если ваши данные находятся в массиве, первый элемент массива будет в первой ячейке таблицы и т. Д.
Теперь, чтобы ответить на первую часть вашего вопроса, какой тип должен использовать ваш источник данныхбыть?Поскольку вы будете периодически добавлять данные в свои данные, вам наверняка понадобится тип mutable .Это может быть NSMutableArray
или NSMutableDictionary
.Используйте массивы, когда источником информации является только один элемент, например, вы добавляете только имена игроков, и используйте словари, когда в вашей информации содержится более одного элемента на ячейку, например, имя игрока, возраст игрока, количество игроков (и, скажем, выготовы отображать всю эту информацию в ячейке, также помните, что вы можете настроить вид ячейки и сделать пользовательские ячейки).Ну, а почему изменяемые типы?Потому что они позволяют добавлять удаленные элементы к ним.Как добавить и где они сидят?Обычно изменяемые типы имеют addObject
, который используется для добавления, а новый элемент всегда добавляется в конец массива.
Надеюсь, это объяснение поможет вам понять, как все работает, и вы сможете представить, какие решения вам нужны.чтобы решить вашу проблему.
Чтобы таблица могла заметить изменение источника данных, вам всегда нужно вызывать:
[myTableView reloadData];
Повторные данные заставят функцию tableView:cellForRowAtIndexPath:
бытьвызывается снова и перезагружает все данные, найденные в вашем источнике данных, и точно в том порядке, в котором они находятся в этом источнике данных.