TabController在使用滑动手势时消失

时间:2016-01-28 12:50:39

标签: ios swipe-gesture uitabcontroller

我有一个带有3个标签的应用。我想向右或向左滑动以转到另一个标签。

我的代码:

//Swipe Between Tabs
    let rightSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))
    let leftSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))
    rightSwipe.direction = .Right
    leftSwipe.direction = .Left
    view.addGestureRecognizer(rightSwipe)
    view.addGestureRecognizer(leftSwipe)
    //end Swipe

并且执行它的功能是

func handleSwipes(sender:UISwipeGestureRecognizer) {
    if (sender.direction == .Left) {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let vc = storyboard.instantiateViewControllerWithIdentifier("PantryList")
        let navigationController = UINavigationController(rootViewController: vc)

        self.presentViewController(navigationController, animated: true, completion: nil)
    }
    if (sender.direction == .Right) {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let vc = storyboard.instantiateViewControllerWithIdentifier("ToDoList")
        let navigationController = UINavigationController(rootViewController: vc)

        self.presentViewController(navigationController, animated: true, completion: nil)
    }
}

我的问题是当使用滑动时底部的tabBarController消失。从我发现它与" presentViewController"方法。这是导致它的原因,有没有办法在不丢失tabBarController的情况下完成它?如果我不必,我真的不想使用prepareForSegueWithIdentifier。除非必须如何完成,否则这似乎比需要做更多的工作。

3 个答案:

答案 0 :(得分:1)

当然,这是因为您在当前视图控制器之上呈现视图控制器。要在UITabbarController viewControllers之间切换,您可以使用setSelectedIndex:方法,在您的情况下,您的第一个vc将分别有0个索引,第二个和第三个1和2。只需在滑动时切换所选索引,即可完成!祝你好运!

答案 1 :(得分:1)

if (sender.direction == .Right) {
    self.navigationController.tabBarController.selectedIndex = 1
}

答案 2 :(得分:0)

我也认为你的问题是使用presentViewController:假设滑动处理代码在UITabBarController中,你在这里做的是在整个tabcontroller的顶部推送一个VC。

我尝试沿着要显示的下一个VC视图移动selected view controller's view(按滑动移动给出的方向),然后将UITabBarController selectedViewController的值更改为新的VC。 / p>