Вид настроек UITabbarController - PullRequest
1 голос
/ 21 августа 2010

У меня есть UITabbarController, установленный Interfacebuilder. Контроллер tabbar имеет 5 вкладок, первая - это страница приветствия, а вторая - UITableViewController. У обоих есть NavigationController. На второй вкладке должен отображаться список категорий. Когда я запускаю приложение, все в порядке. Когда я нажимаю на 2-й вкладке, он отлично загружает вид с помощью контроллера навигации. Но я хочу загрузить определенную категорию на второй вкладке, используя ссылку на первой вкладке.

Итак, я добавил следующую функцию в appDelegate и вызвал ее из моей первой вкладки:

- (void)loadCategoryViewUsingCategoryId:(NSString*)categoryId
{
    CategoryViewController *categoryView = [[CategoryViewController alloc] initWithLoadingCategoryUsingCategoryId:categoryId];

    if (!categoryView) {
        UIAlertView *errorView;
        errorView = [[UIAlertView alloc]
                     initWithTitle: NSLocalizedString(@"Whoops", @"oddsAppAppDelegate")
                     message: NSLocalizedString(@"I did not found the requested category. Sorry!", @"oddsAppAppDelegate")
                     delegate: self
                     cancelButtonTitle: NSLocalizedString(@"Close", @"oddsAppAppDelegate") otherButtonTitles: nil];
        [errorView show];
        [errorView autorelease];
    }
    else {
        self.tabBarController.selectedIndex = 1;

        self.tabBarController.selectedViewController = categoryView;
        [self.tabBarController.selectedViewController setTitle:@"apa"];
        [self.tabBarController.selectedViewController viewDidLoad];
    }
}

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

Кстати, "CategoryViewController" - это UITableViewController.

С уважением,
Пол Пилен

1 Ответ

1 голос
/ 21 августа 2010

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

[[self navigationController] setNavigationBarHidden:NO];

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

UITabBarController *theTabBar = [[UITabBarController alloc]init];
YourWelcomeViewClassHere *welcome = [[YourWelcomeViewClassHere alloc] initWithNibName:@"YourWelcomeViewClassHere" bundle:nil]; //Or other custom initalizers
UINavigationController *welcomeNav = [[UINavigationController alloc] initWithRootViewController:welcome];
CategoryViewController *category = [[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:nil]; //Or other custom initalizers
UINavigationController *categoryNav = [[UINavigationController alloc] initWithRootViewController:category];
/*
Your other View controllers initializations
*/

NSArray *viewControllers = [[NSArray alloc] initWithObjects:welcomeNav,categoryNav,/* other viewControllers ,*/nil];
[theTabBar setViewControllers:viewControllers];

Это может работать и показать ваши взгляды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...