使用滑动手势时 TabController 消失
TabController disappears when using swipe gesture
我有一个包含 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。除非必须这样做,否则这似乎比需要完成的工作更多。
我也认为你的问题出在 presentViewController:。假设滑动处理代码在 UITabBarController 中,您在这里所做的是将 VC 推到整个 tabcontroller 的顶部。
我会尝试将 selected view controller's view 沿着下一个要显示的 VC 视图移动(在滑动移动给定的方向),然后将 UITabBarController selectedViewController 的值更改为您的新 VC.
当然是因为您在当前视图控制器之上呈现视图控制器。要在 UITabbarController
viewControllers
之间切换,您可以使用 setSelectedIndex:
方法,在您的情况下,您的第一个 vc 将有 0 个索引,第二个和第三个分别为 1 和 2。只需轻扫切换选定的索引,就大功告成了!祝你好运!
if (sender.direction == .Right) {
self.navigationController.tabBarController.selectedIndex = 1
}
我有一个包含 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。除非必须这样做,否则这似乎比需要完成的工作更多。
我也认为你的问题出在 presentViewController:。假设滑动处理代码在 UITabBarController 中,您在这里所做的是将 VC 推到整个 tabcontroller 的顶部。
我会尝试将 selected view controller's view 沿着下一个要显示的 VC 视图移动(在滑动移动给定的方向),然后将 UITabBarController selectedViewController 的值更改为您的新 VC.
当然是因为您在当前视图控制器之上呈现视图控制器。要在 UITabbarController
viewControllers
之间切换,您可以使用 setSelectedIndex:
方法,在您的情况下,您的第一个 vc 将有 0 个索引,第二个和第三个分别为 1 和 2。只需轻扫切换选定的索引,就大功告成了!祝你好运!
if (sender.direction == .Right) {
self.navigationController.tabBarController.selectedIndex = 1
}