Я бы сделал некоторую структуру, например, массив разделов, и каждый раздел должен иметь заголовок и массив строк.В стиле JSON, что-то вроде:
[
{
"section_title": "My section 1",
"section_rows": [
{"title": "Lecture 1"},
{"title": "Lecture 2"}
]
},
{
"section_title": "My section 2",
"section_rows": [
{"title": "Lecture 3"},
{"title": "Lecture 4"}
]
}
]
При этом ваши методы будут выглядеть примерно так:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return myArray.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
__weak NSDictionary *section = myArray[section];
return [section[@"section_rows"] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
__weak NSDictionary *lecture = myArray[indexPath.section][@"section_rows"][indexPath.row];
// Configure your cell here
}
// This method should probably be replaced with this one from UITableViewDelegate:
// - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
__weak NSDictionary *sectionInfo = myArray[section];
return sectionInfo[@"title"];
}
Вместо того, чтобы путать попытки подсчета / доступа к вашим данным, вы должныпредварительно отформатируйте его в удобную для обработки структуру перед отправкой / отображением на вашем UIViewController
.Не просто запачкайте свои UIViewController
из-за данных, все должно быть наоборот, и ваше мнение должно быть пассивным.
Надеюсь, это то, что вы просите, я не совсемточно, что вы подразумеваете под "расширяемым" представлением таблицы.