我有这个代码:
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")]
}
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]]
}
}
}