Реализация представления таблицы в контроллере панели вкладок?

Я начинаю с изучения табличных представлений. В моих приложениях используется контроллер панели вкладок, и все вкладки представляют собой простые представления. Я хочу добавить еще одну вкладку, и на этой вкладке я пытаюсь реализовать контроллер навигации в стиле таблицы. Из того, что я читаю, эти представления нуждаются в контроллере UINavigation в качестве Root View Controller, однако мой контроллер панели вкладок уже настроил мой Root View Controller, поэтому я немного смущен.

Может кто-нибудь объяснить, что я должен делать, чтобы реализовать что-то вроде этого.

Ответ 1

Это хороший вопрос и тот, с которым всегда сталкиваются большинство разработчиков, новых для Cocoa. Вам нужно подумать об архитектуре вашего приложения, чтобы узнать, что будет иметь наибольшее значение для ваших требований, но в большинстве случаев вам нужно, чтобы TabBarController был основным/корневым контроллером, обслуживающим другие представления, а затем оттуда настраивал представления tabItem на основе данных, которые вам нужно отображать.

В вашем конкретном случае, когда вы создаете новый элемент табуляции, вместо того, чтобы обслуживать UIViewController в этом представлении tabItem, вы хотите использовать навигационный контроллер. Затем под контроллером навигации вы сможете назначить свой контроллер корневого представления, который должен быть экземпляром UITableViewController (или UIViewController с экземпляром UITableView, если вам нужно больше, чем UITableView в вашем представлении).

Итак, иерархия немного похожа на эту

1 - TabBarController

1.1 ----- NavigationController

1.1.1 ------- UITableViewController

1.1.1 ------- Другие виды на вашем стеке контроллера Navigator

1.2 ----- Любые другие виды на вашем tabBarController

И вот хороший видеоурок, который поможет вам в этом: http://www.youtube.com/watch?v=LBnPfAtswgw

Удачи, Рог

Ответ 2

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

Чтобы добавить представление таблицы, вы создадите UITableViewController (или общий UIViewController с встроенным в него UITableView, это зависит от ваших потребностей) и поместите его в свой UITabBarController viewControllers. Например:

UIViewController *vc1 = [[FirstViewController alloc] init];
UIViewController *vc2 = [[SecondsViewController alloc] init];
UITableViewController *tableVC = [[UITableViewController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects:vc1, vc2, tableVC, nil];

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