我有一个UITableviewController
,我将JSON文件分解为各种对象,以便在tableview
上显示(这样可以正常工作)。
我还创建了变量来存储tableview
中生成的单元格中的某些信息,以传递给detailViewController
(文本和图片)。
使用'准备segue'方法我能够将所需的信息传递给detailViewController
。但是,我一直遇到一个问题,即detailViewController
中显示的数据不是所选单元格的数据,而是表格中最后加载的单元格所显示的数据。
我没有使用didSelectRowAtIndexPath
因为它似乎没有做得更好但是创建了一个额外的segue屏幕(自动)。
总之,我的TableViewController
在屏幕上一次显示约4个单元格。无论我选择哪个单元格,传递给DetailViewController
的信息始终是屏幕上显示的第四个单元格的信息。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Post Cell", forIndexPath: indexPath) as! TableViewCell
var dict = jsonArr[indexPath.row]
cell.postTitle.text = dict["data"]!["post_title"] as? String
cell.postTag.text = dict["data"]!["post_tags"] as? String
cell.postAddress.text = dict["data"]!["post_address"] as? String
titleToPass = cell.postTitle.text
postTagToPass = cell.postTag.text
addressToPass = cell.postAddress.text
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "ListToDetail") {
let viewController = segue.destinationViewController as! DetailPostViewController
viewController.passedTitle = titleToPass
viewController.passedPostTags = postTagToPass
viewController.passedAddress = addressToPass
}
}
答案 0 :(得分:0)
cellForRowAtIndexPath
,因此您的变量将始终具有与要更新的最后一个单元格匹配的值。
不是设置要在该方法中传递的数据,而是在indexPathForSelectedRow:
中调用prepareForSegue
并使用索引路径的行从jsonArr
获取正确的内容。