2012-05-07 7 views
6

Я использую idev-recipes/RaisedCenterTabBar, и я хочу, чтобы модальный вид вызывался с центральной кнопки, а не с камеры.ios tab bar button to modal view

код здесь: https://github.com/boctor/idev-recipes/tree/master/RaisedCenterTabBar

Любые идеи о том, как получить эту работу?

+0

Да, можно поднять модальный вид, нажав кнопку на 'UITabBar'. Вы должны уточнить свой вопрос. –

+0

Обновлено немного ... – stewart715

ответ

2

Я хотел бы создать свой собственный подкласс UITabBarController, а затем добавить в этом методе:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 

} 

Вы сможете сказать, какой элемент был выбран, а затем создать экземпляр модальный VC внутри там.

+0

Что касается текущего VC, прикрепленного к элементу в панели вкладок? Следует ли игнорировать или удалять его, сохраняя элемент панели вкладок? – stewart715

+0

Я думаю, вы можете игнорировать его. Он не может быть удален (TabBarController должен иметь VC для каждой вкладки). –

+7

Но когда я открываю модальный режим, он не переключит VC за ним, а затем, когда закончите с модальным шоу пустым VC? Как мне заставить его просто игнорировать его, а не показывать действие по умолчанию? – stewart715

0

Возможно, вы можете использовать UITabBarDelegate, с методом
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
.
Метод отправляется делегату, когда кто-то нажимает кнопку на панели вкладок. Там вы можете проверить, была ли она правой кнопкой, а затем создать экземпляр модального контроллера.

0

Либо с подклассом, либо с помощью делегата вы можете просто проверить, выбран ли выбранный вами элемент, и если это так, на панели вкладок выберите элемент, который был ранее выбран, а затем представите ваш контроллер представления модели. Поскольку вы будете делать это в том же источнике RunLoop, что и исходный выбор, выбор вкладок будет эффективно отменен без перехода на средний VC.

0

В соответствии с образцом кода, предоставленной вами => https://github.com/boctor/idev-recipes/tree/master/RaisedCenterTabBar

Центральная кнопка поднятый закладка является UIButton, поэтому просто установите действие этой кнопки, как это в классе BaseViewController.m

[button addTarget:self action:@selector(showmodalview) forControlEvents:UIControlEventTouchUpInside]; 

, а затем в методе showmodalview написать этот код =>

-(void)showmodalview 
{ 
    UIViewController *view1=[[UIViewController alloc] init]; // you can use any view controller instance you want ,this is just the example. 
    [self presentModalViewController:view1 animated:YES]; 
} 
4

Существует лучший подход следовать для того, чтобы выполните это. И намного проще.

Что я понимаю, используя эту методологию: https://github.com/boctor/idev-recipes/tree/master/RaisedCenterTabBar - это странные вещи, когда вы пытаетесь скрыть панель вкладок. Поэтому лучшее решение, которое я нашел для меня (то же самое, что и вы), находится здесь: http://www.lantean.co/display-a-modal-uiviewcontroller-when-a-uitabbaritem-is-pressed/

Больше ничего не нужно. Просто игнорируйте контроллер представления, с которым UITabBarItem связан и представляет ваш модальный вид! Это все!