在segue转换发生之前设置变量

时间:2014-09-11 23:18:50

标签: ios cocoa-touch uitableview swift segue

我有一个UITableView,我已设置为在用户选择一行时转到另一个VC(该表只包含一个数组)。我想传递所选项目的行索引。我正在使用didSelectRowAtIndexPath将一个名为selectedCellIndex的变量设置为行索引。但是,因为我还设置了tableView设置为转到下一个VC prepareForSegue,所以didSelectRowAtIndexPath会关闭(或大约在同一时间)。因此,第一次从列表中选择一个项目时,发送的值为nil,之后我总是得到所选行的前一个值。关于如何确保在应用程序转换到下一个segue之前设置变量而没有暂停的任何想法?

这是我的代码:

var selectedCellIndex:Int!

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
    var indexPath = tableView.indexPathForSelectedRow() as NSIndexPath?
    selectedCellIndex = indexPath?.row as Int?
}


//SEGUE
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "signature" {
        let vc = segue.destinationViewController as SignatureViewController
        vc.index = "\(selectedCellIndex)"
    }
}

由于

1 个答案:

答案 0 :(得分:0)

您可以使用indexPathForSelectedRow方法直接从表格视图中获取所选索引路径。无需仅实现didSelectRowAtIndexPath来存储所选索引。

prepareForSegue:方法是您应该设置/访问转换所必需的变量的唯一方法。