使用segue从UITableView传递数据到UIViewController

时间:2016-07-23 18:37:42

标签: ios swift uitableview

我正在尝试将数据从我的UITableView传递到UIViewController以显示更多细节。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        if segue.identifier == "PassDetail" {

            let vc = segue.destinationViewController as! ToDoListDetailViewController
            let customIndexPath = self.tableView.indexPathForSelectedRow
            vc.titleString = userList[userList.count - customIndexPath!.row - 1].Title
            vc.descriptionString = userList[userList.count - customIndexPath!.row - 1].Description

        }

    }

我创建了一个segue push depricated并设置了相应的标识符。

跑步后,什么也没发生。没有崩溃,我尝试设置创建打印方法,当我点击一个单元格时没有调用任何东西。

我试图查看我的字符串中是否有值传递print语句,而我没有收到我的print语句的回复。

即使没有任何数据,当我点击一个单元格时,应用程序至少会崩溃。但事实并非如此。

我尝试使用像show这样的不同的段和东西,但是没有做到这一点。

我错过了代码中的内容吗?

我找到了解决方案。

这就是我理解这是如何工作的方式。 我上面的代码传递了数据,但它没有推送到下一个viewcontroller。

为了解决这个问题,我使用了didelectRowAtIndexPath方法并设置了我的字符串。

以下是我的完整工作代码。

覆盖func tableView(tableView:UITableView,didSelectRowAtIndexPath indexPath:NSIndexPath){

    contentTitle = "Some title" //contentTitle is a global variable

    tableView.deselectRowAtIndexPath(indexPath, animated: true)
    let row = indexPath.row
    performSegueWithIdentifier("PassData", sender: row)

}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "PassData" {

        let vc = segue.destinationViewController as! ToDoListDetailViewController
        vc.titleString = contentTitle //setting the titleString created from my ToDoListDetailViewController and setting it to contentTitle

    }

}

1 个答案:

答案 0 :(得分:1)

从我怀疑,你没有以编程方式推送你的segue。

here获取提示,你是否从你的didSelectRowAtIndexPath方法推送了segue?