如何在自身或另一个viewController上运行segue

时间:2016-05-28 10:26:55

标签: ios swift uitableview segue

我有一个主TableViewController。当用户点击TableView中的单元格时,如果条件语句为true,则再次显示主TableViewController(但在屏幕上显示另一个数据),如果条件为false,则显示另一个ViewController。 在prepareForSegue方法中,我有这个:

if  segue.identifier == "identifier1"
{
    let destination = segue.destinationViewController as? mainViewController // itself
    destination!.x = something // the x variable is in this view controller
}
else if segue.identifier == "identifier2"
{
    let destination = segue.destinationViewController as? viewController2
    destination!.y = something
}

另外,要在使用tableView中的单元格后运行segue,我添加了这个:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    tableView.deselectRowAtIndexPath(indexPath, animated: true)

    if condition is true {
        self.performSegueWithIdentifier("identifier1", sender: self)
    }
    else{
        self.performSegueWithIdentifier("identifier2", sender: self)
    }
}

故事板segue需要一个标识符......它只能有一个值! identifier1或identifier2 但我想以编程方式设置标识符。 我应该如何在Storyboard segue中设置标识符? 还有另一种方法吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

目标视图控制器由segue设置。由于您有两个不同的目的地,故事板中需要两个不同的段。

诀窍是将segView从tableViewController顶部的viewController图标连接到每个目标视图控制器。单击生成的segue箭头并在 Attributes Inspector 中设置其标识符。

wire segue in Storyboard

然后,您可以使用代码中的performSegueWithIdentifier来调用它们。

答案 1 :(得分:0)

不要直接从单元格点击调用segue。使用IBAction方法(可能在`didSelectRowAtIndexPath中,就像你在第二个代码块中显示的那样。

第二个代码块以编程方式设置segue标识符。

您无法在prepareForSegue中切换细分。