UITabBar Модальный ViewContoller - PullRequest
1 голос
/ 21 мая 2011

Я пытаюсь представить TabBarController поверх другого TabBarController.MainWindow.xib моего приложения выглядит следующим образом:

Files Owner
First Responder
My App App Delegate
Window
TabBarContoller
    +TabBar
    +Nav Controller Subclass (a custom class)
        +Navigation Bar
        +Table View Contoller Subclass (custom class)
        +Tab Bar Item
    +Second View Controller (not yet hooked up)

Я пытаюсь отобразить файл xib при нажатии элемента в TableView.Этот xib-файл имеет TabBarController в качестве основного вида, но когда вид отображается, панель вкладок и панель навигации невидимы.Код, который я использую для его отображения:

MyAppAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.customNavController presentModalViewController:customDetailEditViewController animated:YES];

Если я использую приведенный ниже код для перемещения контроллера представления в стек, я вижу правильную панель навигации, но TabBar из корневого контроллера представлениявместо того, который был выдвинут в представлении, показанном на экранеNavigationBar / TabBar из корневого ViewController).

РЕДАКТИРОВАТЬ: Я загрузил источник в http://mi6.nu/tabcontroller.zip.Я был бы очень признателен, если бы кто-то с большим опытом работы с iOS мог взглянуть.

EDIT2 : Самое близкое, что я до сих пор сделал, это представление модального контроллера представления внутрипервая панель вкладок, поэтому мой вид выглядит следующим образом:

NavigationBar  
[          ]
[          ] 
[---View---]
[          ] 
[          ] 
TabBar from the pushed view 
TabBar from the root view

Для достижения этого я использую:

UITabBarController *tabBarController = [[UITabBarController alloc] init];

    UIViewController *directionsView = [[UIViewController alloc] init];
    txtDirections = [[UITextView alloc]initWithFrame:CGRectMake(0,0,self.view.frame.size.width, self.view.frame.size.height)]; 
    [directionsView.view addSubview:txtDirections];

    IconPickerViewController *iconPicker = [[IconPickerViewController alloc]init];
    tabBarController.viewControllers = [NSArray arrayWithObjects:recipeDetailEditViewController,directionsView,iconPicker, nil];
    [directionsView release];
    [iconPicker release];

    MyAppAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
    [delegate.rootNavController presentModalViewController:recipeDetailEditViewController animated:YES];

Хотя это все усложняет, поскольку а) Это не идеально, так какУ меня есть две вкладки и б) все элементы управления (все элементы редактирования) должны быть в TableViewController, чтобы их значения можно было загружать / сохранять для редактирования элементов.Было бы намного проще, если бы выдвигаемое представление могло обрабатывать загрузку / сохранение и отображаться поверх корневых вкладок.

Конечно, это должно быть возможно?

Ответы [ 2 ]

2 голосов
/ 29 мая 2011

Это был абсолютный кошмар, но в итоге я заработал, представив представление модально из TableViewController при нажатии кнопки добавления:

[delegate.rootController presentModalViewController:recipeDetailEditViewController animated:YES];

Delegate.rootController является корневым TabBarController Файл XIB, который я представляю, не имеет TabBarController, а скорее UIView, панель навигации и TabBar. Похоже, это работает, когда представлен модально из NavigationController. Window Layout

0 голосов
/ 22 мая 2011

Почему вы кладете все в свой main.xib?Попробуйте переместить вторую панель вкладок из xib главного окна и вместо этого поместите ее в customDetailEditViewController.

...