简体   繁体   English

在同一View Controller中使用2个表视图(Swift 4)

[英]Use 2 Table View in the same View Controller (Swift 4)

I have a problem handling 2 tables on the same screen. 我在同一屏幕上处理2个表时遇到问题。 Every time he keeps crashing. 每次他不断崩溃。 Can someone help me? 有人能帮我吗?

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    var cell: TableViewCellComunicazioni?

    if tableView == self.tableViewNotifica {
        cell = tableView.dequeueReusableCell(withIdentifier: "cellNotifica", for: indexPath) as? TableViewCellComunicazioni
        let dataNotifica = structNotifica[indexPath.row].dateNotifica
        let testoNotifica = structNotifica[indexPath.row].textNotifica

        cell?.dateNotification.text = "\(date!)"
        cell?.textNotification.text = "\(text!)"
        return cell!
    }
    if tableView == self.tableViewInbox {
        cell = tableView.dequeueReusableCell(withIdentifier: "cellInbox", for: indexPath) as? TableViewCellComunicazioni
        let email = structInbox[indexPath.row].email
        let messaggio = structInbox[indexPath.row].messaggio
        let data = structInbox[indexPath.row].data

        cell?.emailInbox.text = "\(email!)"
        cell?.messaggioInbox.text = "\(message!)"
        cell?.dataInbox.text = "\(date!)"
        return cell!
    }
    return UITableViewCell()
}

This could be a probable fix for your problem: 这可能是解决您的问题的方法:

Coding Example: 编码示例:

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

    if tableView == self.tableViewNotifica {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cellNotifica", for: indexPath) as? TableViewCellComunicazioni
        let dataNotifica = structNotifica[indexPath.row].dateNotifica
        let testoNotifica = structNotifica[indexPath.row].textNotifica

        cell?.dateNotification.text = "\(date!)"
        cell?.textNotification.text = "\(text!)"
        return cell!
    }
    if tableView == self.tableViewInbox {
        let  cell = tableView.dequeueReusableCell(withIdentifier: "cellInbox", for: indexPath) as? TableViewCellComunicazioni
        let email = structInbox[indexPath.row].email
        let messaggio = structInbox[indexPath.row].messaggio
        let data = structInbox[indexPath.row].data

        cell?.emailInbox.text = "\(email!)"
        cell?.messaggioInbox.text = "\(message!)"
        cell?.dataInbox.text = "\(date!)"
        return cell!
    }
      return UITableViewCell()
    }

And make sure that you have correct cell identifier for dequeuing. 并确保您具有正确的出队信元标识符。

extension ViewController : UITableViewDelegate,UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return listmoviesArray.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if tableView == moviesTableView {
            let cell = tableView.dequeueReusableCell(withIdentifier: "MovieTableViewCell", for: indexPath) as! MovieTableViewCell
            cell.delegate = self
            cell.setupCell(listmoviesArray[indexPath.row],indexPath: indexPath)
            return cell
        } else {
            let cell = tableView.dequeueReusableCell(withIdentifier: "MovieTableViewCell2", for: indexPath) as! MovieTableViewCell
            cell.delegate = self
            cell.setupCell(listmoviesArray[indexPath.row],indexPath: indexPath)
            return cell
        }

    }

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if tableView == moviesTableView {
    // Handle your selection for row. 
    } else {
       //Handle your selection for row.
    }
  }
}

Above code produces the following output with 2 Tableview. 上面的代码使用2 Tableview产生以下输出。

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM