我将第一个 TableView var savingUrls 中的值添加到第二个 TableView 中 varDetailsInSection 的第一部分。在prepareForSegue中,Xcode显示“unresolved Identifier for 'indexPath'。我应该如何修改代码?
在第一个 View Controller 中:
var folderNames = [String]()
var savedUrls = [String]()
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let url = savedUrls[indexPath.row]
self.performSegueWithIdentifier(segueToDetailsTable, sender: url)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == segueToDetailsTable {
let detailsVC = segue.destinationViewController as! DetailsViewController
detailsVC.detailsInSection[0].append(savedUrls[indexPath.row])
}
}
在第二个 View Controller 中:
var sectionTitles = ["WebSite", "Date Saved", "Document Used","Add Notes"]
var detailsInSection = [[String]() , [NSDate]() , [AnyObject]() , String]() ]
最佳答案
indexPath
不是定义或传递到 prepareForSegue
的变量。不过,你走在正确的轨道上。由于您在 performSegue...
中将 url
作为发送者传递,因此您不需要 indexPath
来引用 url
。您可以检查 sender
是否为 String
并使用 sender
作为所选的 url
。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let url = savedUrls[indexPath.row]
self.performSegueWithIdentifier(segueToDetailsTable, sender: url)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let url = sender as? String where segue.identifier == segueToDetailsTable {
let detailsVC = segue.destinationViewController as! DetailsViewController
detailsVC.detailsInSection[0].append(url)
}
}
关于ios - 为什么indexPath.row在这里不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36770237/