Я реализовал собственный контроллер панели вкладок в виде набора кнопок, каждый из которых связан с собственным контроллером View. Я руководствовался этой ссылкой http://idevrecipes.com/2011/01/04/how-does-the-twitter-iphone-app-implement-a-custom-tab-bar/, чтобы добиться этого. Таким образом, соответствующая часть кода выглядит следующим образом:Пользовательские проблемы с TabBar
- (void) selectedItemAtIndex:(NSUInteger)itemIndex
{
// Get the right view controller
NSDictionary* data = [self.tabBarItems objectAtIndex:itemIndex];
UIViewController* viewController = [data objectForKey:@"viewController"];
// Remove the current view controller's view
UIView* currentView = [self.view viewWithTag:SELECTED_VIEW_CONTROLLER_TAG];
[currentView removeFromSuperview];
// Set the view controller's frame to account for the tab bar (+ 48)
viewController.view.frame = CGRectMake(0,48,self.view.bounds.size.width, self.view.bounds.size.height - 48);
// Se the tag so we can find it later
viewController.view.tag = SELECTED_VIEW_CONTROLLER_TAG;
// Add the new view controller's view
[self.view insertSubview:viewController.view belowSubview:self.tabBar];
//Keep track of current view controller
self.currentController = viewController;
}
До сих пор работает, я могу видеть каждый контроллер представления в аналогичной Манер к умолчанию TabBarViewController. Но тогда есть требование, когда мне нужно подтолкнуть новый контроллер навигации (он должен взять все рамки приложения) изнутри одного из контроллеров tabBar.
На первый взгляд я попытался следующий код внутри одной из вкладок контроллеров:
DetailViewController *detailViewController = [[DetailViewController alloc]init];
UINavigationController *navigationController = [[UINavigationController alloc]detailViewController];
[self presentModalViewController:navigationController animated:YES];
Однако не работает, как ожидалось, первый вид показан ниже TabBar и второй новый вид не принимает учитывая рамки родительского представления, которые должны быть ограничены экраном, за исключением табуляции. (0, 48, 360, 412). Мой контроллер просмотра подробностей загружает контент из файла nib.
Ну, это совершенно очевидно, так как контроллер TabBar вставляет каждый вид под мой пользовательский TabBar.
[self presentModalViewController:navigationController animated:YES];
Так что я попытался вставить его непосредственно в окне подвид:
[[UIApplication sharedApplication].keyWindow addSubview:navigationController.view];
Но, я думаю, что это не хорошо ... там должно быть лучше подход, который я не могу понять. Поэтому, если кто-нибудь может дать мне предложения о том, как исправить или улучшить эту навигационную систему, было бы здорово.
Большое спасибо.
Спасибо, к сожалению, мне нужно поддерживать 4.x устройств. – Pablo
Если у вас есть привилегия принять решение, вы можете выбрать минимальную цель 5.0, поскольку это упрощает защиту контроллера. – Anupdas