如何从自定义UITabBar启动模态视图?

时间:2011-08-30 03:38:24

标签: iphone objective-c uitabbar modalviewcontroller

我已经从这个GitHub location建立了凸起的中心UITabBar。

我现在的挑战是我无法弄清楚如何创建按下按钮时出现的模态视图。

有没有人用运气好的esv-recipes RaisedCenterTabBar?你是如何实现那里出现的模态表?

或者,是否有一个不同的gitHub项目,它有一个带有模态表的工作自定义标签栏?

谢谢!

2 个答案:

答案 0 :(得分:5)

这是我的解决方案,这是我发现做到这一点的最干净的方式......我真的希望它有所帮助,我花了几个小时研究最好的方法。

我设置了一个“UITabBarController”委托,它直接连接到我在故事板上构建的标签界面。

**不要忘记在头文件中包含“tabBarController”委托

**请注意,此回调方法不是“didSelectViewController”,而是“shouldSelectViewController”。此方法在选择选项卡之前处理请求,这正是您想要的,因此您可以在请求发生之前停止请求...这样您就不必保存当前的索引,传递它并且那些废话。

然后我只是检查将选择哪个选项卡(基于视图控制器的标题。

**另外:这是我的代码,根据您的代码需要进行更改。但是校长应该留下来。我的“performSegueWithIdentifier”实际上是一个连接到我的标签控制器的手动segue,它以模态打开。这段代码对我很有用。

 -(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{

     if([[viewController title] isEqualToString:@"tellvc"])
     {
         [self performSegueWithIdentifier:@"shareModelViewController" sender:Nil];
         return NO;
     }
     else
     {
         return YES;
     }

 }

答案 1 :(得分:2)

我在我正在制作的一个程序中有类似的东西,很高兴向您展示我是如何做到的。我在TabBar中有几个viewControllers。我在ViewDidLoad中首先在屏幕上显示的VC中创建了我的加号按钮。

    // Create a plus button that appears on the tabBar
UIImage *plusButton = [UIImage imageNamed:@"plusbutton.png"];
UIView *tabBarView = [[self tabBarController] view];
addButton = [UIButton buttonWithType:UIButtonTypeCustom];
[addButton setFrame:CGRectMake(127.0, 432.0, [plusButton size].width, [plusButton size].height)];
[addButton setBackgroundImage:plusButton forState:UIControlStateNormal];
[tabBarView addSubview:addButton];
[addButton addTarget:self action:@selector(scalePicker:) forControlEvents:UIControlEventTouchUpInside];    

我将按钮设为tabBarController视图的子视图。稍后在这个VC的实现中,我有一个名为scalePicker的方法:它创建我的其他VC的一个实例并以模态方式呈现它。这是代码:(注意:这是我在上面的代码中设置为加号按钮的目标的方法)

    -(void) scalePicker:(id)sender
{
    // create the view scalePicker, set it's title and place it on the top of the view hierarchy
sp = [[ScalePickerVC alloc] init];
[self presentModalViewController:pickerNavController animated:YES];
}

我希望这可以帮到你, 祝你好运!