我正在开发一个instagram克隆,并试图与用户在Home Feed
屏幕上使用照片标题功能进行交互。
我希望如果用户点击username
,控制器将按ProfileViewController
,或者如果用户点击caption
,控制器将按CommentsViewController
。
感谢您的任何建议!
答案 0 :(得分:0)
使用 label 标签来查找哪个 label
titleLabel.tag = 1
captionLabel.tag = 2
然后使用touchesBegan
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
guard let touch = touches.first else { return }
// to find cell index. use super view of label
if let label = touch.view as! UILabel {
if label.tag == 1 {
// Move to profile screen
} else if label.tag == 2 {
// Move to comments screen
}
}
}
答案 1 :(得分:0)
您可以通过几种方法执行此操作。
您可以附加一个手势,如果您点击框架的特定部分,则可以做一件事。
func tapMethod(gesture:UITapGestureRecognizer) {
//on label
let touch = tap.locationInView(button)
If(label.frame.contains(touch)) {
//....
}
//not on label
Else {
/....
}
}
或者您可以添加2个点击手势,在标签上添加一个手势,在按钮上添加一个手势,然后您可以覆盖
func hitTest(_ point: CGPoint,
with event: UIEvent?) -> UIView?
这将使您可以在必要时触摸按钮的子视图,并在必要时单击按钮的操作。这是一个很好的例子。 https://medium.com/@nguyenminhphuc/how-to-pass-ui-events-through-views-in-ios-c1be9ab1626b。它减少了代码的耦合,并允许不同的部分组合在一起。这是最困难的路线,但我认为,这样做最大的好处就是允许最简单的移动和代码流
答案 2 :(得分:0)
您可以使用cellforRow
之类的cell.button1.tag = 1 ...
方法为每个按钮分配标签,并将 commonEvent 附加到您的 buttons 并检测哪个按钮由sender.tag == 1 { }
轻击,依此类推。.