我有这段代码:
class ViewController: UITableViewController {
var myArr = [(id:1, name:"1123", description:"d1", image:"palm-tree.png"), (id:2, name:"23", description:"d2", image:"palm-tree.png"),
(id:3, name:"3", description:"d3", image:"palm-tree.png"), (id:4, name:"4", description:"d4", image:"palm-tree.png")]
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail" {
var indexPath = tableView.indexPathForSelectedRow()
let destinationViewController:DetailViewController = segue.destinationViewController as DetailViewController
destinationViewController.myArr = myArr[indexPath.row]
}
}
}
我有一个错误 NSIndexPath没有名为row 的成员。如何解决?
谢谢!
更新
class ViewController: UITableViewController {
struct Item {
let id: Int
let name: String
let description: String
let image: String
}
var myArr = [Item(id:1, name:"1123", description:"d1", image:"palm-tree.png"),
Item(id:2, name:"23", description:"d2", image:"palm-tree.png"),
Item(id:3, name:"3", description:"d3", image:"palm-tree.png"),
Item(id:4, name:"4", description:"d4", image:"palm-tree.png")]
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail" {
if let indexPath = tableView.indexPathForSelectedRow() {
let destinationViewController = segue.destinationViewController as DetailViewController
destinationViewController.myArr = [myArr[indexPath.row]]
}
}
}
}
DetailViewController :
class DetailViewController: UIViewController {
struct Item {
let id: Int
let name: String
let description: String
let image: String
}
var myArr = [Item(id:1, name:"1123", description:"d1", image:"palm-tree.png")]
}
答案 0 :(得分:2)
tableView.indexPathForSelectedRow()
返回一个可选NSIndexPath
- 您需要将其解包以访问row
属性:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail" {
if let indexPath = tableView.indexPathForSelectedRow() {
let destinationViewController = segue.destinationViewController as DetailViewController
destinationViewController.myArr = [myArr[indexPath.row]]
}
}
}