Как реализовать разделы UITableView - PullRequest
0 голосов
/ 19 февраля 2012

Вот моя ситуация. Я создаю приложение RSS. Мне нужно, чтобы мои истории отображались в разделе, основанном на времени суток. Существует 3 категории («Истории AM», «Новости PM» и «Редакции»). Я получаю эти категории прямо из RSS-канала.

Как лучше всего это сделать? Всегда будут редакционные статьи и всегда будут AM Stories - переменные только в PM Stories. В настоящее время я сделал три массива для хранения элементов RSS для каждой соответствующей истории. Я завис на возвращении правильного количества разделов в источник данных UITableView и как узнать, какой раздел # соответствует соответствующему разделу (т. Е. Равен ли раздел 0 редакционным статьям или равен AM Stories?)

Я очень ценю любую помощь, которую вы можете мне оказать.

1 Ответ

1 голос
/ 19 февраля 2012

Ваши разделы tableViews будут последовательно пронумерованы, начиная с 0. Если у вас нет PM-рассказов, то AM-публикации будут разделом 0, а передовые статьи - разделом 1. Если у вас действительно есть хранилища PM, то AM-публикации будут разделом 0Истории PM будут разделом 1, а редакционные статьи - разделом 2.

Вы можете вернуть правильное количество разделов из numberOfSectionsInTableView: в зависимости от того, пуст ли ваш массив PM Stories:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if ([pmStoresArray count] > 0) {
        return 3;
    } else {
        return 2;
    }
}

Затем в cellForRowAtIndexPath: вы можете использовать ту же логику, чтобы определить, к какой категории раздела относится ячейка:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    if (indexPath.section == 0) {
        // am stories cell

    } else if (indexPath.section == 1 && [pmStoriesArray count] > 0) {
        // pm stories cell

    } else {
        // editorials cell

    }

    return cell;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...