2017-02-19 18 views
0

Я хотел бы заполнить таблицуView.Заполнение таблицыView из данных с одним массивом и с несколькими разделами

Мои данные внутри массива

var myDataArray = [DataEntry]() 

DataEntry типа представляет собой протокол, такой как:

protocol DataEntry: class { 

    var idx: Int { get set } 
    var category: String { get set } 
    var title: String { get set } 
} 

Порядок моего массива данных таково, как:

IDX = 0: category = "Section0"/title = "Row0"

idx = 1: category = "Section0"/title = "Стр1"

IDX = 2: категория = "Section0"/название = "Стр2"

IDX = 3: категория = "Раздел1"/название = "row0"

IDX = 4: категория = "Раздел1"/название = "Стр1"

IDX = 5: категория = "Раздел 2"/название = "row0"

IDX = 6: категория = "Раздел 2"/название = "Стр1"

Как заполнить таблицуView f rom this dataArray? (разумеется, разделы и строки должны выглядеть в соответствии с содержимым массива)

ответ

1

Наполнение секций и строк из одного массива - не очень хорошая идея. Вы уже заметили, что это слишком сложно и нестабильно.

Единственный случай, когда это возможно, - если ваш массив всегда имеет такое же количество строк в каждом разделе (раздел 1 всегда 3 элемента, раздел 2 всегда 2 и т. Д.). Таким образом, вы всегда можете узнать смещение, с которого начинается ваш раздел (0 для раздела 0, 3 для раздела 1 и т. Д.).

Если и только если это ваш случай, вы могли бы сделать это как так

let offsets = [0,3,5] 
let dataEntry = myDataArray[offsets[indexPath.section]+indexPath.row] 

Но я не могу не подчеркнуть это достаточно: Это ни в коем случае хорошей практикой и следует избегать в целом.

+0

Благодарим вас за разъяснения! К сожалению, мой массив не всегда в том виде, как вы его описали. Поэтому мне нужно найти другое решение. Что такое хорошая практика? В какой форме мне нужно привести свои данные, чтобы создать таблицы tableView с 'dequeueReusableCell' и' indexPath.row' и 'indexPath.section'? Любая помощь ценится! – iKK

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

  • Нет связанных вопросов^_^