2012-05-07 82 views

回答

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关联的视图控制器并展示您的模态视图!就这样!