我正在从一个表视图到另一个表视图执行segue。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
NSLog("You selected cell number: \(indexPath.row)!")
self.performSegue(withIdentifier: "types", sender: productList[indexPath.row])
}
它应该运行ViewController的自定义类(我已在Storyboard中声明)所描述的新TableView的viewDidLoad()
func viewDidLoad(parent: String) {
print("This should print")
super.viewDidLoad()
//self.typeTableView.delegate = self
//self.typeTableView.dataSource = self
//Set reference
ref = Database.database().reference()
//Retrieve posts
handle = ref?.child(parent).observe(.childAdded, with: { (snapshot) in
let product = snapshot.key as? String
if let actualProduct = product
{
self.productList.append(actualProduct)
self.typeTableView.reloadData()
}
})
}
任何想法为什么会发生这种情况?
答案 0 :(得分:1)
override
没有参数,需要override func viewDidLoad() {
...
}
子句:
{{1}}
答案 1 :(得分:1)
将导航控制器嵌入目标控制器 并使用标识符 types 从当前表格视图单元格中创建一个segue。 然后在你的后面添加以下方法 func tableView(_ tableView:UITableView,didSelectRowAt indexPath:IndexPath){}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "types" {
if let indexPath = tableView.indexPathForSelectedRow {
let object = productList[indexPath.row] as! yourProductType
let controller = (segue.destination as! UINavigationController).topViewController as! YourDestinationViewController
controller.yourProductProperty = object
}
}
}
确保在目标控制器中声明yourProductProperty,以便可以访问其中的当前产品对象。
答案 2 :(得分:0)
您的方法签名是
func viewDidLoad(parent: String) {
但它应该是
override func viewDidLoad() {
super.viewDidLoad()
// Your code
}
答案 3 :(得分:-1)