控制自定义披露指示器何时出现在 tableviewcell 中
Controlling when custom disclosure indicator is present in tableviewcell
我正在尝试控制自定义披露指示器何时出现在单元格中。我特别尝试使用具有自定义位置的位置(在我的自定义表格视图单元格中 class):
TableViewCell disclosure indicator position
我试图控制它是否出现在我的单元格中,但由于我使用的是自定义 tableview 单元格,这对我来说很难。为此,这里是我正在使用的 post 中的代码:
class CellSubclass: UITableViewCell {
var accessoryButton: UIButton?
override func awakeFromNib() {
super.awakeFromNib()
accessoryType = .DisclosureIndicator
accessoryButton = subviews.flatMap { [=10=] as? UIButton }.first
}
override func layoutSubviews() {
super.layoutSubviews()
accessoryButton?.frame.origin.y = 15
}
}
这是我的自定义表格视图单元格 class,其中包含该代码:
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 { [=11=] 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 中,我如何打开这个on/off?它在每个单元格中都显示得很好,但我想不出如何制定协议或类似的东西来控制它何时出现和不出现……提前感谢您的帮助! (我不能在我的 cellForRowAt
方法中这样做的原因是因为我不能让我的 ViewController 成为 UITableViewCell
和 [=15= 的子 class ]同时)
我看到了两种实现方式:
- 在 cellForRowAt 方法中你可以调用 accessoryButton.isHidden = true or false
- 更优选的方式 - 创建您自己的带有箭头图像的自定义 UIButton 并将其放置在披露指示器的位置。并通过 isHidden 标志设置可见性。
我正在尝试控制自定义披露指示器何时出现在单元格中。我特别尝试使用具有自定义位置的位置(在我的自定义表格视图单元格中 class):
TableViewCell disclosure indicator position
我试图控制它是否出现在我的单元格中,但由于我使用的是自定义 tableview 单元格,这对我来说很难。为此,这里是我正在使用的 post 中的代码:
class CellSubclass: UITableViewCell {
var accessoryButton: UIButton?
override func awakeFromNib() {
super.awakeFromNib()
accessoryType = .DisclosureIndicator
accessoryButton = subviews.flatMap { [=10=] as? UIButton }.first
}
override func layoutSubviews() {
super.layoutSubviews()
accessoryButton?.frame.origin.y = 15
}
}
这是我的自定义表格视图单元格 class,其中包含该代码:
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 { [=11=] 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 中,我如何打开这个on/off?它在每个单元格中都显示得很好,但我想不出如何制定协议或类似的东西来控制它何时出现和不出现……提前感谢您的帮助! (我不能在我的 cellForRowAt
方法中这样做的原因是因为我不能让我的 ViewController 成为 UITableViewCell
和 [=15= 的子 class ]同时)
我看到了两种实现方式:
- 在 cellForRowAt 方法中你可以调用 accessoryButton.isHidden = true or false
- 更优选的方式 - 创建您自己的带有箭头图像的自定义 UIButton 并将其放置在披露指示器的位置。并通过 isHidden 标志设置可见性。