Как иметь панель вкладок в навигации? - PullRequest
0 голосов
/ 28 марта 2012

Я новичок в разработке для iphone. В настоящее время я делаю проект с использованием ШАБЛОНА TABBED APPLICATION, который содержит 4 вкладки, на одной из которых находится список элементов в представлении таблицы, и при нажатии на ячейку таблицы я хотел бы дать страница описания. Я знаю, что навигация должна использоваться, и я успешно выявляю навигацию, но проблема сейчас в том, что я хотел бы также иметь панель вкладок на странице сведений. Но в моем случае она не появится. Прямо сейчас я использую этот код, чтобы привести навигацию

В конце концов в appdelegate

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
UIViewController *viewController1 = [[[cardsAvailable1 alloc] initWithNibName:@"cardsAvailable1" bundle:nil] autorelease];
UIViewController *viewController2 = [[[fetchcard1 alloc] initWithNibName:@"fetchcard1" bundle:nil] autorelease];
UIViewController *viewController3 = [[[registration alloc] initWithNibName:@"registration" bundle:nil] autorelease];
UIViewController *viewController4 = [[[logintab alloc] initWithNibName:@"logintab" bundle:nil] autorelease];


self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2,viewController3,viewController4, nil];
self.tabBarController.selectedIndex = 3;

navigationController = [[UINavigationController alloc]
                        initWithRootViewController:self.tabBarController];
self.window.rootViewController = self.tabBarController;
[self.window addSubview:navigationController.view];

[self.window makeKeyAndVisible];

[self.navigationController pushViewController: self.detailViewExample animated: YES];

и для навигации по выбору

Какой правильный способ сделать это? Кто-нибудь может предложить мне решение для этого?

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

хорошо, что я сделал, так это то, что у меня было около 5 вкладок, и у каждой был контроллер навигации

вы можете настроить код ниже

//Initialize all the object of classes for Tabs and Navigation
Recipes *frstObj= [[Recipes alloc]init];
GalaryView *galObj = [[GalaryView alloc] init];
FavPageView *favObj = [[FavPageView alloc]init];
MyRecipes *addRec = [[MyRecipes alloc]init];
SearchSelection *searchTab = [[SearchSelection alloc] init];
//EnterContactsViewController *addRec = [[EnterContactsViewController alloc]initWithNibName:@"EnterContactsViewController_iPhone" bundle:nil];

[self.window addSubview:frstObj.view];


navContobj1 = [[UINavigationController alloc] init];
navContobj2 = [[UINavigationController alloc] init];
navContobj3 = [[UINavigationController alloc]init];
navContobj4 = [[UINavigationController alloc]init];
navContobj5 = [[UINavigationController alloc]init];

[navContobj1 pushViewController:frstObj animated:YES];
[navContobj2 pushViewController:galObj animated:YES];
[navContobj3 pushViewController:favObj animated:YES];
[navContobj4 pushViewController:searchTab animated:YES];
[navContobj5 pushViewController:addRec animated:YES];
[frstObj release];
[galObj release];
[favObj release];
[searchTab release];
[addRec release];

//Set Title
navContobj2.title = @"Galary";
navContobj3.title = @"Favoruite";
addRec.title = @"Add Recipe";
navContobj4.title = @"Search Recipes";


UITabBarController *tab = [[UITabBarController alloc] initWithNibName:nil bundle:nil];
[tab setViewControllers:[NSArray arrayWithObjects:navContobj1,navContobj2,navContobj3,navContobj4,navContobj5,nil]];




// use extended method to set background color
//[tab setBackground];
 [self copyDatabaseIfNeeded];
// Override point for customization after application launch.
[self.window addSubview:viewController.view];
[self.window addSubview:tab.view];
[self.window makeKeyAndVisible];
0 голосов
/ 28 марта 2012

Ошибка в вашем коде или в вашем объяснении. Вы не создаете приложение с вкладками, поскольку первое окно в вашем окне - это окно NavigationController. И в вашем коде есть опасная вещь, потому что первое представление в окнах - это navigationcontroller.view, а rootViewController - это tabViewController. Не очень умный.

То, что вы хотите сделать, это приложение с вкладками с контроллером навигации на каждой вкладке:

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] 
                                                    bounds]] autorelease];

UIViewController *viewController1 = [[[cardsAvailable1 alloc] 
                           initWithNibName:@"cardsAvailable1" bundle:nil] autorelease];
UIViewController *viewController2 = [[[fetchcard1 alloc] 
                                initWithNibName:@"fetchcard1" bundle:nil] autorelease];
UIViewController *viewController3 = [[[registration alloc] 
                              initWithNibName:@"registration" bundle:nil] autorelease];
UIViewController *viewController4 = [[[logintab alloc] 
                                  initWithNibName:@"logintab" bundle:nil] autorelease];

self.tabBarController = [[[UITabBarController alloc] init] autorelease];

self.tabBarController.viewControllers = [NSArray arrayWithObjects:
    [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease], 
    [[[UINavigationController alloc] initWithRootViewController:viewController2] autorelease],
    [[[UINavigationController alloc] initWithRootViewController:viewController3] autorelease],
    [[[UINavigationController alloc] initWithRootViewController:viewController4] autorelease], 
nil];

self.tabBarController.selectedIndex = 3;

self.window.rootViewController = self.tabBarController;
[self.window addSubview:tabBarController.view];

[self.window makeKeyAndVisible];

UINavigationController * navController = [[tabBarController viewControllers] objectAtIndex:3];
[navController pushViewController:self.detailViewExample animated:YES];
...