我有一個表格視圖,當您點擊其中一行時,它會實例化另一個UITableViewController
。不過,我得到這個代碼:must register a nib or a class for the identifier or connect a prototype cell in a storyboard
必須註冊一個筆尖或類的標識符或連接故事板中的原型單元格
這裏是故事板:
這裏是我的代碼
第一的UITableViewController
class MainActivityViewController: UITableViewController {
let node = MenuStructure.structure.childenNode
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return node.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = node[indexPath.row].value
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedNode = node[indexPath.row]
let subMenuViewController = SubMenuViewController(node: selectedNode)
navigationController?.pushViewController(subMenuViewController, animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//self.navigationItem.title = MenuStructure.structure.value
}
}
然後當你點擊進入其中一行將繼續到這個UITableViewController
class SubMenuViewController: UITableViewController {
let node: Node
init(node: Node) {
self.node = node
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("required initializer not implemented")
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return node.childenNode.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
tableView.register(UITableViewCell, forCellReuseIdentifier: "cell")
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = node.childenNode[indexPath.row].value
return cell
}
override func viewDidLoad() {
}
}
我試過註冊我的細胞,但我不明白如何以及不知道該把它放在哪裏。
歡迎任何建議!謝謝!
更新的代碼
class SubMenuViewController: UITableViewController {
let node: Node
init(node: Node) {
self.node = node
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("required initializer not implemented")
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return node.childenNode.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = node.childenNode[indexPath.row].value
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UITableViewController.self, forCellReuseIdentifier: "cell")
}
}
您是否設置了cel l故事板中的標識符?請參閱https://stackoverflow.com/questions/27066205/how-to-connect-a-prototype-cell-in-a-storyboard – nathan
我試圖實例化的控制器不在故事板中,所以我不能設置我的手機標識 –
它在哪裏?你只使用代碼創建它? – nathan