Переключение между различными представлениями таблицы - PullRequest
1 голос
/ 14 марта 2012

У меня довольно сложный подкласс UITableViewController.Кроме того, данные в табличном представлении могут быть отсортированы одним из трех способов в зависимости от настроек пользователя (доступ к которым осуществляется в другом представлении).Каждый из параметров требует различной сортировки и группировки табличного представления, хотя поведение элементов в строках является общим (например, действие выбора для каждой строки одинаково, независимо от настроек отображения. Аналогично, верхняя и нижняя панели инструментовсогласуются).Это приводит к большому количеству ветвлений в моем коде в зависимости от примененных пользовательских настроек.

Есть ли хороший способ немного разделить это?Я рассмотрел три отдельных подкласса UITableView, но затем я теряю общность.Так, может быть, абстрактный пользовательский подкласс UITableView с тремя подклассами, унаследованными оттуда?Как бы я переключился между случаями, когда настройка изменилась?

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

Ответы [ 2 ]

0 голосов
/ 15 марта 2012

Вы можете установить параметры для источника данных tableview, такие как «hot», «new», «near», и когда пользователь переключит представление таблицы, вы можете просто изменить значение params, а затем перезагрузить представление таблицы.

0 голосов
/ 14 марта 2012

Это можно сделать с помощью одного UITableViewController.Позволяет вызвать UITableViewController RootViewController.

Когда RootViewController загружен, вы можете загрузить индикатор того, какой тип сортировки будет иметь место.Я бы, вероятно, просто сохранил настройку в NSUserDefaults и загрузил пользовательские настройки в методе viewDidLoad RootViewController.

Просто используйте этот выбор настроек в качестве флага, как в примере ниже.

- (NSInteger)tableView:(UITableView *)aTableView 
 numberOfRowsInSection:(NSInteger)section 
{
    if ([sortType isEqualToString:@"Name"]) {
        // return number of rows
    }
    else if ([sortType isEqualToString:@"Distance"]) {
        // return number of rows
    }
    else {
        // return number of rows
    }
}

Вам просто нужно сделать это в каждом методе таблицы, который будет зависеть от типа сортировки.

Надеюсь, это поможет.

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