我想从标签栏项目启动segue。当用户触摸标签栏上的项目时。我想推出一个赛格。
要做到这一点,我写了这段代码:
class TabBarController: UITabBarController, UITabBarControllerDelegate {
@IBOutlet var tabs: UITabBar!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
if item.tag == 3 {
self.performSegueWithIdentifier("test123", sender: self)
}
}
}
实际上除了问题之外它运作良好。这是启动segue但也切换选项卡。我不想要这个。它应该只是启动启动segue不应该切换选项卡。
如何防止此问题?
答案 0 :(得分:1)
这是让代码工作的最小变化
在viewDidLoad()
添加中
self.delegate = self
然后实现委托方法
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
let shouldSelectIndex = tabBarController.viewControllers?.indexOf(viewController)
if shouldSelectIndex == 2
{
self.performSegueWithIdentifier("test123", sender: self)
return false
}
return true
}
这应该有效。
但我觉得你有设计问题。