我试图控制单元格中是否存在自定义披露指标。我特意尝试使用具有自定义位置的那个(在我的自定义tableview单元类中):
我试图控制它是否出现在我的手机中,但由于我使用自定义的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
方法的tableview中,如何打开/关闭此功能?它在每个细胞中显示都很好,但是我无法想出如何制作一个协议或类似的东西来控制它何时出现并且不会...提前感谢您的帮助! (我在cellForRowAt
方法中执行此操作的原因是因为我无法同时将我的ViewController作为UITableViewCell
和UIViewController
的子类)
答案 0 :(得分:1)
我看到了两种实现方式: