iphone - приложение Tabbar с NavigationController, без MainWindow.xib - PullRequest
0 голосов
/ 01 ноября 2011

Привет всем,

Я довольно новичок в iPhone Dev.Я следовал некоторому руководству и создал приложение с вкладками.Ниже приведен код в реализации appdelegate:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController *viewController1 = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil];
UIViewController *viewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];

self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];

self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];

Затем установите заголовок и изображение для вкладки в каждой реализации контроллера.

Моя проблема в том, что, например, в моемviewController1, мне нужно перейти к viewController3, когда я использую метод presentModalViewController для проталкивания viewController3 внутрь, панель вкладок внизу исчезнет.

Пока я пытался использовать делегат приложения для ссылки на мой tabBarController, ииспользуйте метод tabBarController.navigationController pushViewController, мой viewController3 не выдвигается и, похоже, ничего не происходит.

Я попытался выполнить несколько учебных пособий, но все это необходимо перетащить контроллер навигации в файл MainWindow.xib, которыйв xcode 4 MainWindow.xib больше не существует.Как создать навигационный контроллер из кода, чтобы приложение могло перемещаться между различными представлениями, не скрывая панель вкладок?

Любой комментарий очень ценится!Заранее спасибо!

:)

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

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

Поскольку вы хотите, чтобы панель вкладок оставалась видимой при представлении viewController3, необходимо сделать контроллер навигации дочерним по отношению к контроллеру панели вкладок.

UIViewController *viewController1 = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil];
UINavigationController *navController1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
UIViewController *viewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];

self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:
    navController1,
    viewController2,
    nil];

Затем, когда вы хотите представить viewController3, сделайте это:

// in some method of viewController1
[self.navigationController pushViewController:viewController3 animated:YES];
0 голосов
/ 01 ноября 2011

Я не очень уверен, но вы пробовали это ??? На самом деле я собираюсь использовать XCode 4 в ближайшее время, я все еще использую версию 3.2.8: -

WebViewController *viewController = [[WebViewController alloc]initWithNibName:@"WebViewController" bundle:nil];
    viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:viewController animated:YES];
    [viewController release];

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

Надеюсь, это поможет ..:)

...