专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
登录和注册按钮点击事件
定义协议
// 按钮点击协议 // 需要继承NSObjectProtocol protocol HMVisitorViewDelegate: NSObjectProtocol { // 点击注册 func vistorViewRegister() // 点击登录 func vistorViewLogin() }
HMVisitorView
添加代理属性class HMVisitorView: UIView { // 按钮点击代理 weak var vistorViewDelegate: HMVisitorViewDelegate? }
按钮添加点击事件
// 注册点击事件 button.addTarget(self, action: #selector(registerClick), for: UIControlEvents.touchUpInside)
// 登录点击事件 button.addTarget(self, action: #selector(loginClick), for: UIControlEvents.touchUpInside)
实现点击事件,在点击事件里面调用代理方法
// MARK: - 点击事件 func registerClick() { vistorViewDelegate?.vistorViewRegister() }
func loginClick() { vistorViewDelegate?.vistorViewLogin() }
设置
HMBaseViewController
成为visitorView
的代理private func setupVisitorView() { // 使用访客视图 self.view = visitorView // 判断当前是哪个控制器 if self is HMHomeViewController { visitorView.startRotationAnimation() } else if self is HMMessageViewController { visitorView.setupVisitorInfo(imageName: "visitordiscover_image_message", message: "登录后,别人评论你的微博,发给你的消息,都会在这里收到通知") } else if self is HMDiscoveryViewController { visitorView.setupVisitorInfo(imageName: "visitordiscover_image_message", message: "登录后,最新、最热微博尽在掌握,不再会与实事潮流擦肩而过") } else if self is HMProfileViewController { visitorView.setupVisitorInfo(imageName: "visitordiscover_image_profile", message: "登录后,你的微博、相册、个人资料会显示在这里,展示给别人") } visitorView.vistorViewDelegate = self }
使用
extension
让CZBaseTableViewController
实现CZVistorViewDelegate
// MARK: - CZBaseTableViewController 扩展,实现 CZVistorViewDelegate 协议 // 扩展,和oc category类似, estension 可以实现协议, 方便代码统一管理 extension HMBaseViewController: HMVisitorViewDelegate { // 点击注册 func vistorViewRegister() { print("HMBaseViewController: vistorViewRegister") } // 点击登录 func vistorViewLogin() { print("HMBaseViewController: vistorViewLogin") } }