Программное назначение источника данных для UITableView без вызова метода источника данных - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть tableview с двумя секциями, каждая с одной строкой.Я хочу заполнить данные tableview нажатием кнопки.В viewDidLoad я прячусь tableView.При нажатии кнопки я присваиваю datasource и delegate tableview и показываю tableview, но его методы datasource не вызываются.

Ниже приведен код:

@IBAction func btnShowAction(_ sender: Any) {

    tableView.delegate = self
    tableView.dataSource = self
    tableView.isHidden = false
}

func numberOfSections(in tableView: UITableView) -> Int {

    return 2
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return 1
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    return ((tableView.frame.size.height / 2) - 20)
}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

    if(section == 0) {

        return "Section 1"
    }
    else {

        return "Section 2"
    }
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {

    return 20
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let tableViewCell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell
    tableViewCell.lblText.text = "abc"
    return tableViewCell
}

1 Ответ

0 голосов
/ 12 декабря 2018

Пока представление загружает, например, viewDidLoad(), метод источника данных времени будет вызывать reloadData() внутренне, но в вашем случае при нажатии кнопки нам нужно явно вызвать reloadData(), чтобы обновить представление таблицы, так как представление уже загружено,Ваш код должен выглядеть следующим образом:

@IBAction func btnShowAction(_ sender: Any) {

    tableView.delegate = self
    tableView.dataSource = self
    tableView.reloadData()
    tableView.isHidden = false
}

Это перезагрузит строки и разделы табличного представления.Надеюсь, это поможет.

...