我有一个主viewController和一个detailsViewController。 detailsViewController有2个按钮。两个按钮都是segue回到主控制器,但我想根据使用的segue自定义主viewController。检查哪个segue用于到达viewController的最佳方法是什么,以便可以根据具体情况自定义主viewController? - 如果segue1通向主viewController,那么我想隐藏label1。如果segue2通向主viewController,那么我希望label2隐藏。
答案 0 :(得分:10)
在主视图控制器中创建一个变量,如
var vcOne : Bool = true
现在在DetailsViewController
中override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if segue.identifier == "segue_one"
{
let mainVC : MainViewController = segue.destinationViewController as! MainViewController
secondVC.vcOne = true
}
else if segue.identifier == "segue_two"
{
let mainVC : MainViewController = segue.destinationViewController as! MainViewController
secondVC.vcOne = false
}
}
现在在MainView控制器
中 override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
//Now check here for which segue
if(vcOne)
{
// implement for button one click
}
else
{
// implement for button two click
}
}
希望它可以帮到你
答案 1 :(得分:1)
我要做的事情就是检查使用了哪个segue。您必须在故事板中为segue设置标识符!
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "yourIdentifier" {
let yourVC = segue.destinationViewController as? yourViewController
//do magic with your destination
}
}
答案 2 :(得分:0)
可以选择设置segue的标识符。这应该是唯一标识符。这样您就可以识别哪个segue被激活了。 例如:
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "Identifier1" {
let firstVC = segue.destinationViewController as? FirstViewController
} else if segue.identifier == "Identifier2" {
let secondVC = segue.destinationViewController as? SecondViewController
}
}