Почему не перезагружается tableView работа swift? - PullRequest
0 голосов

Когда я звоню reloadData() из delegate (или viewDidLoad), функция tableView(...cellForRowAtIndexPath:..) не срабатывает. Когда я звоню reloadData() из tapButton, все работает. Почему?

override func viewDidLoad() {
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self
        exerciseList = ExerciseListTableViewController.ExerciseList
        trainingList = TrainingListTableViewController.trainingList
        if UserDefaults.standard.integer(forKey: "FactoryEx") != 0 {
            identifierFactory = UserDefaults.standard.integer(forKey: "FactoryEx")
        }
        tableView.rowHeight = 60
        tableView.allowsSelection = false
        //tableView.tableFooterView = UIView()
    }

    func reload(choose: Bool){
        exerciseTableChoose = choose
        tableView.reloadData()
    }
    @IBAction func reload(_ sender: UIButton) {
        exerciseList.append(Exercise())
        tableView.reloadData()
    }
protocol FirstTable {
func reload(choose: Bool)
func addCell(name: String, parametr: [Bool])
}

Ответы [ 3 ]

0 голосов
/ 09 марта 2020

Сделайте это следующим образом.

extension SCSelectSubTypeVC : UITableViewDelegate, UITableViewDataSource{

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return datasource.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell:SCSelectSubTypeCell = self.tblView.dequeueReusableCell(withIdentifier: "SCSelectSubTypeCell") as! SCSelectSubTypeCell
    cell.confirgureCell(datasource[indexPath.row])
    return cell

}


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

}

и вызовите self.tblView.reloadData () в функции viewWillAppear (), если вы хотите перезагрузить таблицу каждый раз, когда появляется viewController.

0 голосов
/ 10 марта 2020

Не забывайте, пользовательский интерфейс может обновлять только в основном потоке!

0 голосов
/ 09 марта 2020

добавить tableView.reloadData () in viewDidAppear () . из-за viewDidLoad () вызывается только при создании Viewcontroller.

...