IOS Swift:在静态单元格中具有内部TableView的TableViewController

时间:2017-07-27 09:59:47

标签: ios swift uitableview tableview

Comparison : left TableViewController : not Working ; right ViewController : working

我在左侧控制器中有一个内部tableView的问题: 因为左边的控制器是带有静态单元格的TableViewController,所以它无法实现UITableViewDelegate,UITableViewDataSource协议,所以我不能使用TableViewController类作为内部tableView的委托。

我创建了一个类(InnerTVDelegate),它充当内部tableView的委托,我将tableView委托/数据源设置为InnerTVDelegate的实例,但它不起作用。

以下是我的课程:

导入UIKit

class 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.
}

}

class 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)!")
}

}

这有什么问题?

由于

1 个答案:

答案 0 :(得分:0)

试试这个

@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.
    }