当我按下 UIView 类中的按钮时,我想将导航 Controller 触发到其他屏幕。我怎样才能做到这一点?
//创建按钮Iboutlet的UIView类代码
import UIKit
protocol ButtonDelegate: class {
func buttonTapped()
}
class SlidesVC: UIView {
var delegate: ButtonDelegate?
@IBAction func onClickFinish(_ sender: UIButton) {
delegate?.buttonTapped()
}
@IBOutlet weak var imgProfile: UIImageView!
}
//ViewController Class code in Which Button Protocol will be entertained
class SwipingMenuVC: BaseVC, UIScrollViewDelegate {
var slidesVC = SlidesVC()
override func viewDidLoad() {
super.viewDidLoad()
slidesVC = SlidesVC()
// add as subview, setup constraints etc
slidesVC.delegate = self
}
extension BaseVC: ButtonDelegate {
func buttonTapped() {
self.navigationController?.pushViewController(SettingsVC.settingsVC(),
animated: true)
}
}
最佳答案
更简单的方法是使用类型别名。您必须在 2 个地方编写代码。 1. 您的 viewClass 和 2. 在您的 View Controller 中。
在您的 SlidesView 类中添加一个类型别名并定义参数类型(如果您需要),否则将其留空。
class SlidesView: UIView {
typealias OnTapInviteContact = () -> Void
var onTapinviteContact: OnTapInviteContact?
@IBAction func buttonWasTapped(_ sender: UIButton) {
if self.onTapinviteContact != nil {
self.onTapinviteContact()
}
}
}
class SwipingMenuVC: BaseVC, UIScrollViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let slidesView = SlidesView()
slidesView.onTapinviteContact = { () in
// do whatever you want to do on button tap
}
}
关于ios - 我想在 UIView 类中按下按钮时触发导航 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55397840/