Хорошо, вот моя проблема: мое приложение отображает категории в панели вкладок в нижней части экрана iPhoneOS.Это позволяет только 5 категорий, прежде чем он представляет кнопку БОЛЬШЕ.У меня есть более 25 (пожалуйста, не отвечайте на это, говоря: «Пересмотрите свою заявку ... и т. Д.» - это было грубо сказано ранее. Они относятся к категории продуктов питания, напитков и т. Д. И не могут быть изменены).Я хочу разрешить пользователю размещать свои любимые на главной странице.Система редактирования Apple moreNavigationController позволяет переставлять только 20 элементов панели вкладок из-за нехватки места на странице редактирования.Этого недостаточно, поэтому мне нужно реализовать свой собственный экран редактирования.Я установил rightBarButtonItem на ноль и создал свой собственный.Используя NSLog, я вижу, что "щелчок" происходит при нажатии кнопки РЕДАКТИРОВАТЬ, но я не могу использовать pushViewController.Ничего не произошло.Я думаю, что это как-то связано с навигационным контроллером, к которому я обращаюсь ... но я не уверен.PS: все это происходит в моем приложении делегата, который действует как UITabBarControllerDelegate и UINavigationControllerDelegate.
Я попытался сделать следующее:
- ( void )navigationController:( UINavigationController * )navigationController_local willShowViewController:( UIViewController * )viewController_local animated:( BOOL )animated
{
UIViewController * currentController = navigationController_local.visibleViewController;
UIViewController * nextController = viewController_local;
// Do whatever here.
NSLog(@"Nav contoller willShowViewController fired\n'%@'\n'%@'\nThere are currently: %d views on the stack\n",currentController,nextController,[self.navigationController.viewControllers count]);
if ( [nextController isKindOfClass:NSClassFromString(@"UIMoreListController")])
{
UINavigationBar *morenavbar = navigationController_local.navigationBar;
UINavigationItem *morenavitem = morenavbar.topItem;
morenavitem.rightBarButtonItem = nil;
NSLog(@"Is a UIMoreListController\n");
UIBarButtonItem *editTabBarButton = [[UIBarButtonItem alloc]
initWithTitle:@"Edit"
style:UIBarButtonItemStylePlain
target:self
action:@selector(editTabBar:)];
morenavitem.rightBarButtonItem = editTabBarButton;
[editTabBarButton release];
}
}
Это работает, чтобы поместить кнопку EDIT вверхсправа от экрана - имитируя внешний вид Apple ... но когда эта кнопка нажата, вы не можете выйти из проклятого moreNavigationController.
Я пробовал много вещей.UIAlerts работают и т. Д. ... но выдвигать (или извлекать - даже выдвигать в корневую панель) контроллер представления в стеке - нет.
- (void) editTabBar:(id)sender {
NSLog(@"clicked edit tabbar\n");
NSLog(@"Total count of controllers: %d\n",[self.navigationController.viewControllers count]);
TabBarViewController *tabBarViewController2 = [[TabBarViewController alloc] initWithNibName:@"TabBarView" bundle:nil];
tabBarViewController2.navigationItem.title=@"Edit Tab Bar";
[self.navigationController pushViewController:tabBarViewController2 animated:YES];
[tabBarViewController2 release];
NSLog(@"finished edit tabbar\n");
}
Если вы нажмете кнопку редактирования на странице отображения moreNavigationController,вы получаете записи в журнале, как ожидалось, И (это странно), просмотры стека взбираются, но никаких изменений страницы не происходитЯ отметил это, чтобы не использовать правильный контроллер навигации ... но я заблудился, как найти, какой использовать.
это тоже странно.В функции редактирования, если я просто делаю это:
- (void) editTabBar:(id)sender {
self.tabBarController.selectedIndex = 0;
}
Это возвращает меня домой (к tabbarcontroller 0)
НО это делает:
- (void) editTabBar:(id)sender {
[self.navigationController popToRootViewControllerAnimated:YES];
}
не делаетработа.
Имеет ли moreNavigationController какое-то особое качество, которое связывает с остальной частью системы?