我有一个扩展单元格的表格视图。扩展的单元格来自XIB文件。在表的类中,所有的代码都控制plist的扩展和数据提取。我试图添加一个关闭按钮,但只希望它在单元格展开时显示。现在,我不能引用按钮来隐藏它,因为它在另一个类中。以下是我试图访问它的方式:

import UIKit

class SecondPolandViewController: UIViewController {
    @IBOutlet weak var tableView: UITableView!

    var customTableViewCell:CustomTableViewCell? = nil
    var items = [[String:String]]()

    override func viewDidLoad() {
        super.viewDidLoad()

        **REFERENCING CLASS**

        customTableViewCell = CustomTableViewCell()

        let nib = UINib.init(nibName: "CustomTableViewCell", bundle: nil)
        self.tableView.register(nib, forCellReuseIdentifier: "cell")

        self.items = loadPlist()
    }

    func loadPlist()->[[String:String]]{
        let path = Bundle.main.path(forResource: "PolandResourceList", ofType: "plist")

        return NSArray.init(contentsOf: URL.init(fileURLWithPath: path!)) as! [[String:String]]
    }

    var selectedIndex:IndexPath?
    var isExpanded = false

    func didExpandCell(){
        self.isExpanded = !isExpanded
        self.tableView.reloadRows(at: [selectedIndex!], with: .automatic)
    }
}

extension SecondPolandViewController:UITableViewDataSource, UITableViewDelegate{
    ***HIDING BUTTON***

    let button = customTableViewCell?.closeButton
    button?.isHidden = true

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        self.selectedIndex = indexPath
        self.didExpandCell()
    }

    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: "cell", for: indexPath) as! CustomTableViewCell

        cell.selectionStyle = .none

        let item = self.items[indexPath.row]
        cell.titleLabel.text = item["title"]
        cell.shortLabel.text = item["short"]
        cell.otherImage.image = UIImage.init(named: item["image"]!)
        cell.thumbImage.image = UIImage.init(named: item["image"]!)
        cell.longLabel.text = item["long"]

        return cell
    }

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        let height = UIScreen.main.bounds.height

        if isExpanded && self.selectedIndex == indexPath{
            //return self.view.frame.size.height * 0.6
            return 400
        }

        return 110
        //return height * 0.2
    }
}

但这并不能掩盖它。
这是我要打电话的XIB,如果它有帮助的话。可能很简单,我只是一个自学成才的开发人员。
import UIKit

class CustomTableViewCell: UITableViewCell {
    @IBOutlet weak var closeButton: UIImageView!
    @IBOutlet weak var otherImage: UIImageView!
    @IBOutlet weak var thumbImage: UIImageView!
    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var shortLabel: UILabel!
    //@IBOutlet weak var longLabel: UITextView!
    @IBOutlet weak var longLabel: UITextView!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        //let width = UIScreen.main.bounds.width
        //let height = UIScreen.main.bounds.height
        //thumbImage.frame.size.width = height * 0.19
        //thumbImage.frame.size.height = height * 0.19
    }
}

ios - 无法从其他类别调用 object-LMLPHP
ios - 无法从其他类别调用 object-LMLPHP

最佳答案

似乎您只需要将这些行添加到cellForRowAt:indexPath方法中:

if indexPath == selectedIndexPath {
  cell.closeButton.isHidden = false
} else {
  cell.closeButton.isHidden = true
}

您可以在return行之前添加它们

10-07 19:51
查看更多