prepareforsegue vs performwithsegue if statement。

时间:2015-01-26 14:58:14

标签: ios swift

假设我有一个表视图,我将如何创建代码以使一个单元格转到一个视图控制器,然后将另一个单元格转换为第二个视图控制器。特别是准备segue并使用segue if语句执行。

1 个答案:

答案 0 :(得分:0)

您的父视图控制器(表视图所在的位置)应该具有您的UITableViewDelegate方法。

您需要创建自己的实现:

optional func tableView(_ tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)

在那里(当按下一个单元格时会被调用),你想要打电话

self.performSegueWithIdentifier("Load View", sender: self)

传递给didSelectRowAtIndexPath的参数之一是索引路径行,因此您知道用户按下了哪一行。并且您可以在" sender"中传递该单元格(或信息,或单元格正在从中绘制内容的对象)。 performSegueWithIdentifier方法的参数。

您可以通过prepareForSegue:sender:方法从父级直接访问子视图控制器。所以你可以这样做:

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    if (segue.identifier == "Load View") {
        // pass data to next view

        let cellData = sender as YourDataObject

        let childViewController = segue.destinationViewController as YourChildViewController

        // and now you can directly set whatever custom fields / bits
        // you need to set in your destination view controller
    }
}

到目前为止有道理吗?