Comparison : left TableViewController : not Working ; right ViewController : working
我在左侧Controller中的内部tableView有一个问题:
因为左控制器是带有静态单元格的TableViewController,所以它无法实现UITableViewDelegate,UITableViewDataSource协议,因此我不能将TableViewController类用作内部tableView的委托。
我创建了一个类(InnerTVDelegate)作为内部tableView的委托,并将tableView委托/数据源设置为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 - iOS Swift:在静态单元格中具有内部TableView的TableViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45347408/