我有一个带有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。除非必须如何完成,否则这似乎比需要做更多的工作。
答案 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>