UiView() 内的自定义匿名关闭导航后退按钮
Custom anonymous closure navigation back button inside of UiView()
我有一个问题,如何在 UIView() 中实现自定义后退导航按钮的创建。我有一个包含 collectionView 的主控制器,单击任何单元格都会转到包含 tableView 的第二个控制器。我在 tableView headers 中创建了一个单独的自定义视图,我在其中添加了标签、图片和按钮。我需要在自定义视图中单击后退按钮时,它将转到主控制器。如何实施?我仅以编程方式制作应用程序 -(无情节提要)
CustomView.swift
lazy var backButton: UIButton = {
let button = UIButton(type: .system)
let image = UIImage(systemName: "chevron.left")
button.setImage(image, for: UIControl.State())
button.tintColor = .white
button.isHidden = true
button.addTarget(self, action: #selector(goToBack), for: .touchUpInside)
button.translatesAutoresizingMaskIntoConstraints = false
return button
}()
@objc func goToBack() {
}
您需要为此创建一个委托。在你的 CustomView 中创建一个 属性 weak var delegate: ButtonDelegate
protocol ButtonDelegate: class {
func onTap()
}
并且您持有 CustomView 的 ViewController 确实实现了该协议并在实现的 onTap() 方法中执行了 navigationController.popViewController()。
在您的 CustomView goToBack() 方法中调用 delegate?.onTap()。
首先在CustomView
中添加一个回调函数。然后从 goToBack()
方法调用这个 callback
闭包。
class CustomView: UIView {
var backButtonTapped: (() -> Void)?
lazy var backButton: UIButton = {
let button = UIButton(type: .system)
let image = UIImage(systemName: "chevron.left")
button.setImage(image, for: UIControl.State())
button.tintColor = .white
button.isHidden = true
button.addTarget(self, action: #selector(goToBack), for: .touchUpInside)
button.translatesAutoresizingMaskIntoConstraints = false
return button
}()
@objc func goToBack() {
backButtonTapped?()
}
}
在 UIViewController
中初始化这个 CustomView
,给出闭包的动作。
let view = CustomView()
view.backButtonTapped = { [weak self] in
self?.navigationController?.popViewController(animated: true)
}
我有一个问题,如何在 UIView() 中实现自定义后退导航按钮的创建。我有一个包含 collectionView 的主控制器,单击任何单元格都会转到包含 tableView 的第二个控制器。我在 tableView headers 中创建了一个单独的自定义视图,我在其中添加了标签、图片和按钮。我需要在自定义视图中单击后退按钮时,它将转到主控制器。如何实施?我仅以编程方式制作应用程序 -(无情节提要)
CustomView.swift
lazy var backButton: UIButton = {
let button = UIButton(type: .system)
let image = UIImage(systemName: "chevron.left")
button.setImage(image, for: UIControl.State())
button.tintColor = .white
button.isHidden = true
button.addTarget(self, action: #selector(goToBack), for: .touchUpInside)
button.translatesAutoresizingMaskIntoConstraints = false
return button
}()
@objc func goToBack() {
}
您需要为此创建一个委托。在你的 CustomView 中创建一个 属性 weak var delegate: ButtonDelegate
protocol ButtonDelegate: class {
func onTap()
}
并且您持有 CustomView 的 ViewController 确实实现了该协议并在实现的 onTap() 方法中执行了 navigationController.popViewController()。
在您的 CustomView goToBack() 方法中调用 delegate?.onTap()。
首先在CustomView
中添加一个回调函数。然后从 goToBack()
方法调用这个 callback
闭包。
class CustomView: UIView {
var backButtonTapped: (() -> Void)?
lazy var backButton: UIButton = {
let button = UIButton(type: .system)
let image = UIImage(systemName: "chevron.left")
button.setImage(image, for: UIControl.State())
button.tintColor = .white
button.isHidden = true
button.addTarget(self, action: #selector(goToBack), for: .touchUpInside)
button.translatesAutoresizingMaskIntoConstraints = false
return button
}()
@objc func goToBack() {
backButtonTapped?()
}
}
在 UIViewController
中初始化这个 CustomView
,给出闭包的动作。
let view = CustomView()
view.backButtonTapped = { [weak self] in
self?.navigationController?.popViewController(animated: true)
}