提问人:Philipp 提问时间:9/13/2023 更新时间:9/13/2023 访问量:20
在 UITableViewHeaderFooterView 中处理 UIImage 的点击
Handling a tap of UIImage inside of UITableViewHeaderFooterView
问:
我有一个习俗,叫做.它确实包含称为 .如何访问它以添加点击手势。
这是我的标题的一段代码:UITableViewHeaderFooterView
ProfileHeaderView
UIImageView
userImage
userImage
class ProfileHeaderView: UITableViewHeaderFooterView {
// MARK: - Subviews
private var statusText: String = ""
lazy var userImage: UIImageView = {
let imageView = UIImageView(image: UIImage(named: me.login))
imageView.layer.cornerRadius = 45
imageView.clipsToBounds = true
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.isUserInteractionEnabled = true
return imageView
}()
...
}
这是我在 a 中使用的代码:UIViewController
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if section == 0 {
let view = tableView.dequeueReusableHeaderFooterView(withIdentifier: "ProfileHeaderView")
view?.isUserInteractionEnabled = true
let tapPicture = UITapGestureRecognizer(
target: self,
action: #selector(didTapPicture)
)
tapPicture = 1
view?.userImage.addGestureRecognizer(tapPicture)
return view
}
return nil
}
我确实收到以下错误:。为什么?我以为我将userImage添加到我的标题中。但事实证明,将其添加到我的自定义标题中是不够的。是否有任何解决方法或解决方案可以添加到其中?Value of type 'UITableViewHeaderFooterView' has no member 'userImage'
tapGesture
答:
1赞
HangarRash
9/13/2023
#1
dequeueReusableHeaderFooterView
返回没有属性的返回,因此出现错误。UITableViewHeaderFooterView
userImage
您只需要将结果转换为 。dequeueReusableHeaderFooterView
ProfileHeaderView
if let view = tableView.dequeueReusableHeaderFooterView(withIdentifier: "ProfileHeaderView") as? ProfileHeaderView {
view.isUserInteractionEnabled = true
let tapPicture = UITapGestureRecognizer(
target: self,
action: #selector(didTapPicture)
)
tapPicture = 1
view.userImage.addGestureRecognizer(tapPicture)
return view
}
这样做的一个问题是,当用户滚动时,您最终会向标题添加越来越多的手势识别器。
更好的整体解决方案是在自定义标头类中设置手势,并定义委托或回调属性。然后,当自定义标头处理点击时,它可以调用委托或回调,以便视图控制器可以根据需要执行操作。
评论
0赞
Philipp
9/13/2023
谢谢!它帮了大忙!您能否举例说明如何处理 ProfileHeaderView 中的点击,然后在 UIViewController 中触发操作?我不确定我是否知道如何从那里委派它
评论