#iphone #uinavigationcontroller #uitabbarcontroller
#iPhone #uinavigationcontroller #uitabbarcontroller
Вопрос:
Я добавляю view controller в navigation controller, а затем добавляю его в контроллер панели вкладок. но если я добавлю это, как
navigationController.viewControllers =
[NSArray arrayWithObjects:rootViewController, rootViewController.photoViewController, nil];
tabBarController.viewControllers = [NSArray arrayWithObjects:tourNavigation,mapNavigation ,browserNavigation,
navigationController,nil];
Здесь не отображается вкладка с четвертым навигационным контроллером .. другие контроллеры просты, как
BrowserViewController *browserView = [[BrowserViewController alloc]initWithNibName:@"BrowserViewController"
bundle:nil];
browserView.title = @"Browser";
UINavigationController *browserNavigation = [[[UINavigationController alloc]initWithRootViewController:browserView]
autorelease];
Это работает нормально.. но навигация с помощью массива не отображается.
Комментарии:
1. Вы уверены, что ни одна из ссылок не равна нулю?
2. я. на самом деле я видел этот код в appdelegate, например, в photoviewcontroller.photoViewController = [[PhotoViewController new] авторелиз]; if ([[DBSession sharedSession] is LINKED]) { NavigationController.ViewControllers = [NSArray arrayWithObjects:RootViewController, RootViewController.photoViewController, nil]; } // Добавьте представление контроллера навигации в окно и отобразите. [окно addSubview:NavigationController.view];
3. И я хочу добавить это в tabbarcontroller. есть идеи?
4. Мое первое предположение было nil controller, попробуйте создать более простой пример только с базовым контроллером навигации и посмотрите, работает ли это.
5. код, который я опубликовал в комментарии, работает правильно. для панели вкладок это не так.
Ответ №1:
Я не думаю, что вам следует так настраивать viewControllers
массив навигационного контроллера. Вместо этого попробуйте:
navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
[navigationController pushViewController:rootViewController.photoViewController animated:NO];
Предполагается, что вы хотите, чтобы контроллер просмотра фотографий отображался, когда пользователь нажимает на вкладку. Он будет поверх стека контроллера навигации.
Ответ №2:
Вам нужно начать с приложения на основе просмотра. А затем создайте UITabBarController в вашем файле AppDelegate.
Appdelegate.h
UITabBarController *tabBarController;
// set properties
Appdelegate.m
// Synthsize
tabBarController = [[UITabBarController alloc] init];
tabBarController.delegate=self;
//Adding Search,Nearby,Map,AboutUs,Favorites Tabs to tabBarController
Search * search = [[Search alloc] init];
UINavigationController *searchNav = [[UINavigationController alloc] initWithRootViewController:search];
Nearby* nearby = [[Nearby alloc] init];
UINavigationController *nearbyNav = [[UINavigationController alloc] initWithRootViewController:nearby];
Map* map = [[Map alloc] init];
UINavigationController *mapNav = [[UINavigationController alloc] initWithRootViewController:map];
AboutUs* aboutUs = [[AboutUs alloc] init];
UINavigationController *aboutUsNav = [[UINavigationController alloc] initWithRootViewController:aboutUs];
Favorites* favorites = [[Favorites alloc] init];
UINavigationController *favoritesNav = [[UINavigationController alloc] initWithRootViewController:favorites];
NSArray* controllers = [NSArray arrayWithObjects:searchNav,nearbyNav,mapNav,aboutUsNav,favoritesNav, nil];
tabBarController.viewControllers = controllers;
[window addSubview:tabBarController.view];
Вы можете соответствующим образом управлять тем, на какой вкладке вы хотите разместить контроллер навигации или только контроллер просмотра.
Затем в каждом из упомянутых выше контроллеров просмотра вам необходимо реализовать
- (id)init {}
в котором вы можете задать название вкладки и изображение.
Комментарии:
1. Мое приложение основано на окне. И он запускается со стартовой страницы, и я закодировал эту строку в кнопке стартовой страницы. пожалуйста, скажите, могу ли я сделать это на базе Windows?
2. Привет. Я не уверен в этом. Я никогда не пробовал это в оконном приложении. И мне действительно жаль, что я не могу попробовать это сегодня, поскольку у меня нет с собой моего MAC. Вы можете попробовать это. Запишите результат. Для меня это тоже будет полезно. Спасибо 🙂