iOS Tab Bar按钮转模态视图

6

是的,可以通过点击UITabBar上的按钮来弹出模态视图。您需要让您的问题更加具体。 - Shaggy Frog
5个回答

4
有一个更好的方法可以实现,而且更加容易。在使用这种方法时,我了解到:https://github.com/boctor/idev-recipes/tree/master/RaisedCenterTabBar 当你试图隐藏标签栏时,会发生奇怪的事情。所以我找到了最好的解决方案(与您的做法相同),就在这里:http://www.lantean.co/display-a-modal-uiviewcontroller-when-a-uitabbaritem-is-pressed/。无需做任何其他事情,只需忽略UITabBarItem关联的视图控制器,并呈现您的模态视图!就是这样!

2

我会创建你自己的UITabBarController子类并添加这个方法:

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

}

您将能够确定选择了哪个项目,然后在其中实例化一个模态VC。


当前选项卡栏中的项目附加的当前视图控制器怎么办?应该忽略它,还是可以在保留选项卡栏项目的同时将其删除? - stewart715
我认为你可以忽略它。它无法被移除(每个选项卡栏都需要一个视图控制器)。 - LJ Wilson
7
当我打开模态框时,它会在其后面切换VC,然后在完成模态操作后显示空白VC。我该如何让它忽略默认的操作而不显示呢? - stewart715
1
@stewart715 使用 tabBarController(_:shouldSelectViewController:) 代替。 - ma11hew28

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];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接