我正在尝试将数据从我的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
}
}