当我返回页面时,更改表视图的数字和单元格数据



我正在使用嵌套表视图。主表视图列出了文件类别。列出文件的子表视图。我用野生动物园打开文件。当我打开文件后返回页面时,子表视图列出不正确。我该如何解决这个问题?Android sdk 有"onActivityResult"方法。iOS 有类似的功能吗?谢谢。

视图控制器

import UIKit

class ProductDetailViewController: UIViewController, UITableViewDataSource, UITableViewDelegate{
    var bundleProductModel:ProductModel? = ProductModel.init()
    var lastFileCatIndex:Int = 0
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // If tableview is file category table.
        if (tableView.tag == 100){
            return bundleProductModel!.fileCategoryModels.count
        } else /* Table view is file tableview. */ {
            //self.lastFileIndex = self.lastFileIndex + 1
            return (bundleProductModel?.fileCategoryModels[self.lastFileCatIndex].files.count)!
        }
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if (tableView.tag == 100){
            // Define cell for file category.
            let cell = tableView.dequeueReusableCell(withIdentifier: "FileCategoryTableViewCell") as! FileCategoryTableViewCell
            // Set file category cell height.
            cell.frame.size.height = CGFloat(((bundleProductModel?.fileCategoryModels[indexPath.row].files.count)! * 44) + 42)
            // cell row height
            tableView.rowHeight = CGFloat(((bundleProductModel?.fileCategoryModels[indexPath.row].files.count)! * 44) + 42)
            // Control bound
            if (self.lastFileCatIndex <= indexPath.row){
                // Index.
                self.lastFileCatIndex = indexPath.row
                // File category name.
                cell.lblFileCatNme.text = "   (bundleProductModel?.fileCategoryModels[indexPath.row].file_category_name ?? "Unknow")   "
            }
            return cell
        } else {
            // Define cell for files.
            let cell = tableView.dequeueReusableCell(withIdentifier: "FileTableViewCell") as! FileTableViewCell
            if ((bundleProductModel?.fileCategoryModels[self.lastFileCatIndex].files.count)! > indexPath.row){
                // Set file model to file cell.
                cell.setFile(fileItem: (self.bundleProductModel?.fileCategoryModels[self.lastFileCatIndex].files[indexPath.row])!)
                // file cell delegate
                cell.delegate = self
            } else {
                cell.lblFileName.text = "unknow"
            }
            return cell
        }
    }
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}
extension ProductDetailViewController:FileCellDelegate{
    func didClickDownload(downloadLink: String, button: UIButton) {
        if let url = URL(string: downloadLink) {
            UIApplication.shared.open(url)
        }
    }
}

iOS 上一个非常简单的解决方法是覆盖viewWillAppear并像这样调用reloadData()

override func viewWillAppear() {
    super.viewWillAppear()
    tableView.reloadData()
}

每次视图重新出现时,此操作都会更新您的表。

已解决

问题是最后一个文件类别索引变量。例如:最终值为4。当我回到页面时;相对于第四指数上市。我在主表视图单元格中定义子表视图并解决。

文件类别表视图单元格

class FileCategoryTableViewCell: UITableViewCell, UITableViewDelegate, UITableViewDataSource {
    // General Objects
    var fileCategoryModel:FileCategoryModel = FileCategoryModel.init()
    // Cell Ui Objects
    @IBOutlet weak var lblFileCatNme: UILabel!
    @IBOutlet weak var fileTableView: UITableView!
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return fileCategoryModel.files.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = fileTableView.dequeueReusableCell(withIdentifier: "FileTableViewCell") as! FileTableViewCell
        cell.lblFileName.text = "Ex File..."
        return cell
    }
    override func awakeFromNib() {
        super.awakeFromNib()
    }
    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }
    // Set category model.
    func setFileCategory(fileCategoryModel:FileCategoryModel){
        self.fileCategoryModel = fileCategoryModel
        self.fileTableView.dataSource = self
        self.fileTableView.delegate = self
    }
}

相关内容

  • 没有找到相关文章

最新更新