2013-12-13 4 views
4

То, что я в основном пытаются это реализовать сегмент управления/TableView как в почтовом ящике (см вокруг 2:00: http://www.youtube.com/watch?v=FG-h8pDXfoE&feature=youtu.be&t=2m)сегментированные управления для переключения между несколькими tableviews

Я использую Core Data в одном UITableViewController подключен к UITableView.

Когда пользователь переключает UISegmentedControl, то TableView перезагружается с другим набором NSPredicate и UITableViewRowAnimationRight/Left, вид делает вид, что что другой вид таблицы скользит в и заменяет старую.

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

я могу видеть несколько различных способов идти об этом, но я решил спросить вас, ребята, за некоторые указатели, чтобы возглавить меня в правильном направлении:

Что такое лучший способ иметь сегментированные управлять, чтобы переключаться через несколько табличных просмотров? Должны ли эти табличные представления подключаться к одному источнику данных/делегату?

ответ

3

Посмотрите на этот контейнер: https://github.com/xmartlabs/XLMailBoxContainer. Это делает анимацию пользовательского интерфейса среди контроллеров представления. Эти контроллеры могут расширять UITableViewController или любой другой контроллер представления.

UITableViewCell анимация салфетки может быть выполнена с использованием https://github.com/alikaragoz/MCSwipeTableViewCell.

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

2

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

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

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

Другой подход заключается в использовании вид контроллера сдерживания. Вы должны создать UITableViewController для каждого, а затем иметь родительский контроллер представления с сегментированным контролем, который соответственно заменяет контроллер детского представления.

Что касается анимации и производительности, я не вижу никаких проблем. Вы можете получить анимацию без особых усилий, если используете NSFetchedResultsController, см. Пример здесь: https://developer.apple.com/library/ios/documentation/CoreData/Reference/NSFetchedResultsControllerDelegate_Protocol/Reference/Reference.html.

+0

Эти табличные представления будут показывать одни и те же элементы только в разных «состояниях» - в основном, как простой список дел, в котором сегментированный элемент управления будет переключаться между предметами, которые были либо неполными, либо полными. Прямо сейчас у меня есть настройка с одним делегатом и источником данных, но анимация становится немного изменчивой, когда в разных списках есть много элементов. – user2336702

+0

Тогда я бы пошел с первым подходом. Просто настройте свою ячейку в зависимости от текущего контекста. – kkodev

+0

Это то, что я на самом деле установил прямо сейчас. Единственное, что производительность падает, и что анимация на самом деле не иллюстрирует чувство сегмента в сегменте (как в Mailbox). Я использую салфетки на клетках, поэтому это очень важно. Тогда я остаюсь с Containment View Controller Containment? – user2336702

0

См. SBSegmentedViewController. Я написал его именно для того, что вы пытаетесь сделать.

+0

Как мне сделать анимацию? (http://www.youtube.com/watch?v=FG-h8pDXfoE&feature=youtu.be&t=2m) – user2336702

+0

Кроме того, следует ли использовать один источник данных/делегат для всех таблиц? Я использую Core Data и NSFetchedResultsController. – user2336702

+0

В настоящее время это не делает анимацию, но это не сложно добавить. У вас было бы два полностью отдельных контроллера табличных представлений, которые могли бы стоять сами по себе, если бы это было необходимо. Таким образом, отдельный делегат и отдельный экземпляр «NSFetchedResultsController». –

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