Вопрос по ios – 2 UITableViews в одном UIView

28

у меня естьUIView для этого нужно отобразить два UITableView, но они никогда не отображаются вместе, используяSegementedBar Вы можете переключать одно или другое.

Что было бы лучшим способом справиться с этим? Просто создайтеTable View Controller и измените источник данных, или создайте 2Table View Controllers и просто скрыть один, когда другой виден.

2 таблицы будут иметь совершенно разную компоновку с разными пользовательскими ячейками.

Ваш Ответ

5   ответов
6

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    ...

    if (tableView.tag == 1) {

        ...

    } else { // tableView == self.secondTableView

        ...
    }
}

поэтому нет необходимости иметь переменную UITableVeiw в файле .h. Нужны два табличных представления в .xib

48

Это означает, что все методы делегата / источника данных становятся более сложными, НО это означает, что вы можете сохранить отношение один к одному между viewController & amp; Посмотреть.

сохранить ссылку на каждое из представлений таблицы

//vc.h
@property (nonatomic, weak) IBOutlet UITableView* firstTableView;
@property (nonatomic, weak) IBOutlet UITableView* secondTableView;

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

//vc.m
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    ...

    if (tableView == self.firstTableView) {

        ...

    } else { // tableView == self.secondTableView

        ...
    }
}

return cell;

}

Error: User Rate Limit ExceededUITableViewControllerError: User Rate Limit ExceededtableViewError: User Rate Limit ExceededsearchDisplayController.searchResultsTableViewError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded woutr_be
Error: User Rate Limit Exceeded woutr_be
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
4

но я лично предпочту подход с двумя отдельными контроллерами.

Подход 1 - создайте один контроллер табличного представления и измените источник данных

This approach help in avoiding extra and repeated code. With this memory management is good as using one controller only.(Although this is not a big concern till then we won't have a lot of data.) Issue with this is having complexity.

Подход 2 - 2 Контроллер табличного представления

With this approach definitely have extra and repeated code. But with this is less complexity.
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded woutr_be
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded woutr_be
0

UITableViewControllers и обменяться мнениями. Это меньше кода, меньше сложности и так, как Apple делает это сTabBar.

Что касается сложности кода, то это действительно не так. Вы просто делаете следующее, чтобы переключать представления, когдаUISegmentedControlЗначение изменилось:

UIView *previousSuperview = myViewController1.view.superview;
myViewController2.view.frame = myViewController1.view.frame;
[myViewController1.view removeFromSuperview];
[previousSuperview addSubview:myViewController2.view];

В качестве альтернативы вы можете установить соответствующий видhidden имущество.

Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededUITableViewError: User Rate Limit Exceeded
4

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

Основным преимуществом этого является то, что каждый раз, когда вам не нужно звонитьreloadData обновить одну таблицу. Мне просто нужно правильно обработать столик шоу & amp; скрыть поток И поверьте мне, это выглядит круто. Не щёлкает вообще.

В моем случае я создаю четыре таблицы только по коду. И я создаю метод, который возвращает мне таблицу, основанную на теге, который я пропустил.

я держуcellForRowAtIndexPath как можно меньше, разделив код на разные функции.

Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededcellForRowAtIndexPathError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы