2010-01-12 4 views
5

У меня есть UIViewController, который должен быть способен отображать tableView с несколькими источниками данных. UITableView охватывает примерно половину размера экрана, и есть кнопка вверх и вниз, которая позволяет вам просматривать разные данные. Каждый раз, когда нажата кнопка «Вверх» и «Вниз», я хотел бы в конечном счете использовать UIViewAnimationTransitionCurlDown или что-то похожее на отображение следующего UITableView.Лучший способ обработки нескольких UITableViews в одном UIViewController?

Вопрос: нужно ли мне несколько UIViewControllers для этого, с встроенным в каждый из них tableView? Должен ли я просто создать один экземпляр UITableView и изменить его источник данных при нажатии кнопки «вверх» или «вниз»? Если это всего лишь один экземпляр UITableView, как мне удастся получить завиток на той части экрана, которую он занимает, чтобы сделать его похожим на новый tableView?

ответ

5

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

В конце концов, это зависит от того, как выглядят ваши функциональные возможности и наборы данных. В результате может оказаться проще реализовать экземпляр datasource таблицы представления & один раз, введя фактический источник данных в этот класс - или может быть проще написать собственный код источника данных для каждого вида таблицы.

+0

Как бы вы «гнезлили» один контроллер вида с другим? Я понимаю добавление subviews и все, но uitableviewcontroller? – randombits

+1

Ваш «родительский» контроллер представлений будет отвечать за создание соответствующих контроллеров табличных представлений и отображение их представлений. Нет никакой причины, по которой вы не можете одновременно просматривать несколько изображений на экране, управляемых отдельными контроллерами. – pix0r

+1

Да, в основном ваш метод viewDidLoad может просто сделать что-то вроде topTableController = [[MyTopTableController alloc] init]; topTableController.view = self.topTableView; topTableController.delegate = self; (или сделать что-то подобное в файле nib) ... Посмотрев на это, похоже, просто проще использовать один контроллер на таблицу, а не пытаться использовать один контроллер в качестве делегата/ds для нескольких таблиц. Вы можете это сделать, потому что методы делегата передаются указателем на UITableView, который вы можете, если() или switch(), но может быть более чистым, чтобы использовать несколько «субконтроллеров», – Nimrod

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