将数据从 UITableView 传递到 UIViewController
Posted
技术标签:
【中文标题】将数据从 UITableView 传递到 UIViewController【英文标题】:Passing data with segue from UITableView to UIViewController 【发布时间】:2016-07-23 18:37:41 【问题描述】:我正在尝试将数据从我的 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
并设置了适当的标识符。
运行后,什么都没有发生。没有崩溃,我尝试设置创建打印方法,当我点击一个单元格时没有调用任何内容。
我试图查看我的字符串中是否有值与打印语句一起传递,但我没有收到我的打印语句的回复。
即使没有任何数据,当我点击一个单元格时,应用程序至少应该崩溃。但事实并非如此。
我尝试使用不同的 segues,例如 show
之类的,但这并没有成功。
我的代码是否遗漏了什么?
解决方案
我找到了解决方案。
这就是我理解它的工作原理的方式。 我上面的代码传递了数据,但它不会推送到下一个视图控制器。
为了解决这个问题,我使用了 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
【问题讨论】:
您应该尝试查看的第一件事是,“userList[userList.count - customIndexPath!.row - 1].Title”是否有任何价值。设置 vc 变量后放置一个 print 语句,看看会发生什么。还要确保你的 segue 标识符是正确的 @The_Curry_Man 我这样做了,但我没有收到我的印刷声明的回复。即使我的 userList 中没有值,它至少应该崩溃,但我没有。 【参考方案1】:据我怀疑,您没有以编程方式推送您的 segue。
从here 获得提示,您是否从您的 didSelectRowAtIndexPath 方法中推动了转场?
【讨论】:
我本来是想推segue的,但是正确的做法是显示segue。但这也不起作用。 没关系,但是您是通过 didSelectRowAtIndexPath 方法手动完成的吗? 嗯,不,我实际上没有。有机会我会回复你的去试试以上是关于将数据从 UITableView 传递到 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章
将 managedobject 从 uitableview 传递到文本字段以在核心数据模型中进行编辑
如何使用 didSelectRowAtIndexPath 将变量从 uitableview 传递到第二个 tableview?