0

我正在尝试控制单元格中何时出现自定义披露指示符。我特别尝试使用具有自定义位置的位置(在我的自定义 tableview 单元格类中):

TableViewCell 披露指示器位置

我试图控制它是否存在于我的单元格中,但是由于我使用的是自定义 tableview 单元格,所以这对我来说很困难。为此,这是我正在使用的帖子中的代码:

class CellSubclass: UITableViewCell {

    var accessoryButton: UIButton?

    override func awakeFromNib() {
        super.awakeFromNib()
        accessoryType = .DisclosureIndicator
        accessoryButton = subviews.flatMap { $0 as? UIButton }.first
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        accessoryButton?.frame.origin.y = 15
    }
}

这是我的自定义 tableview 单元格类,其中包含该代码:

protocol MainTableViewCellDelegate {
    func tappedReport(id: String)
    func cell(_ cell: MainTableViewCell, didTapReport reportID: String)

}

class MainTableViewCell: UITableViewCell {

    @IBOutlet weak var cellView: UIView!
    @IBOutlet weak var userLabel: UILabel!
    @IBOutlet weak var timeLabel: UILabel!
    @IBOutlet weak var postLabel: UILabel!
    var accessoryButton: UIButton?

    var postItem: PostData!
    var delegate: MainTableViewCellDelegate?
    override func awakeFromNib() {
        accessoryType = .disclosureIndicator
        accessoryButton = subviews.flatMap { $0 as? UIButton }.first
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        accessoryButton?.frame.origin.y = 15
    }

    func setPost(post: PostData) {
        postItem = post
        let ourPost = postItem.postId
        print(ourPost)
    }


    @IBAction func reportButton(_ sender: UIButton) {
        delegate?.tappedReport(id: "3")
        delegate?.cell(self, didTapReport: "Test")
    }

}

现在,在我的表格视图中,我cellForRowAt如何打开/关闭它?它在每个单元格中都显示得很好,但我想不出如何制定一个协议或类似的东西来控制它何时出现而不是......提前感谢您的帮助!(我不能只在我的cellForRowAt方法中这样做的原因是因为我不能让我的 ViewController 同时成为UITableViewCelland的子类UIViewController

4

1 回答 1

1

我看到了两种实现方式:

  1. 在 cellForRowAt 方法中,您可以调用 accessoryButton.isHidden = true 或 false
  2. 更优选的方式 - 创建您自己的带有箭头图像的自定义 UIButton 并将其放置在披露指示器的位置。并通过 isHidden 标志设置可见性。
于 2018-02-13T02:19:46.547 回答