Comparison : left TableViewController : not Working ; right ViewController : working
我对左侧 Controller 中的内部 tableView 有疑问: 因为左侧 Controller 是一个带有静态单元格的 TableViewController,它无法实现 UITableViewDelegate、UITableViewDataSource 协议(protocol),所以我不能使用 TableViewController 类作为内部 tableView 的委托(delegate)。
我创建了一个类 (InnerTVDelegate) 作为内部 tableView 的委托(delegate),我将 tableView 委托(delegate)/数据源设置为 InnerTVDelegate 的一个实例,但它不起作用。
这是我的类(class):
导入 UIKit
类 MyTableViewController: UITableViewController {
@IBOutlet weak var innerTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
innerTableView.delegate = InnerTVDelegate()
innerTableView.dataSource = InnerTVDelegate()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
类 InnerTVDelegate : NSObject, UITableViewDelegate, UITableViewDataSource {
var items: [String] = ["We", "Heart", "Swift"]
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.items.count;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "InnerTVTableViewCell") as! InnerTVTableViewCell
cell.mytextLabel?.text = self.items[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("You selected cell #\(indexPath.row)!")
}
这有什么问题?
谢谢
最佳答案
试试这个
@IBOutlet weak var innerTableView: UITableView!
var tvDelegate:InnerTVDelegate()!
override func viewDidLoad() {
super.viewDidLoad()
tvDelegate = InnerTVDelegate()
innerTableView.delegate = tvDelegate
innerTableView.dataSource = tvDelegate
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
关于iOS swift : TableViewController with inner TableView in a static cell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45347408/