Программное объединение UITabController и UINavigation controller http://t.co/R52RlUL UITabController & UINavigation controller программно - PullRequest
1 голос
/ 12 апреля 2011

Я создал UItabbarcontroller и 2 представления с UITableViews, просто используя код (без элементов IB), и теперь я хочу добавить панель навигации вверху, которая будет включать кнопки добавления и редактирования, однако мне кажется, что я споткнулся и взорвался мое приложение или добавление контроллера навигации только на 3-ю вкладку.

Вот мой основной код для добавления панели вкладок и переключения режимов просмотра

К вашему сведению - я использую XCode4

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.mainTabBar = [[UITabBarController alloc] init];

// create the 2 views
tableViewController* vc1 = [[tableViewController alloc] init];
tableViewController2* vc2 = [[tableViewController2 alloc] init];

// put them in an array
NSArray* controllers = [NSArray arrayWithObjects:vc1, vc2, nil];

// for the tab bar
mainTabBar.viewControllers = controllers;

// Add the tab bar controller's current view as a subview of the window
[self.window addSubview:self.mainTabBar.view]; 

// Override point for customization after application launch.
[self.window makeKeyAndVisible];
return YES;
}

1 Ответ

2 голосов
/ 12 апреля 2011

Где вы хотите навигационный контроллер (ы)? Вы должны создать одну для каждой вкладки, которую хотите, в UITabBarController.

Вы добавляете навигационный контроллер вместе с первым контроллером представления в его стеке. Попробуйте это:

// create the controllers for UITabBarController
tableViewController *vc1 = [[[TableViewController alloc] init] autorelease];
navController *nav1 = [[[UINavigationController alloc] initWithRootViewController:vc1] autorelease];

tableViewController *vc2 = [[[TableViewController alloc] init] autorelease];
navController *nav2 = [[[UINavigationController alloc] initWithRootViewController:vc2] autorelease];

// put them in an array
NSArray *controllers = [NSArray arrayWithObjects:nav1, nav2, nil];

// rest of your code

Также обратите внимание, что вам нужно освободить все, что вы выделяете или сохраняете. Вы можете сделать это, как я, добавив autorelease при их инициализации, или вы можете освободить их явно после добавления их в массив controllers.

Затем вы настраиваете navigationItem для каждого контроллера представления в его методе loadView или viewDidLoad в зависимости от того, как вы его реализовали.

...