提交 eb0e98b0 编写于 作者: DCloud_iOS_XHY's avatar DCloud_iOS_XHY

调整 native-view 示例

上级 25d28d89
import { UIButton, UIControl,ButtonType } from "UIKit" import { UIButton, UIControl } from "UIKit"
export class NativeButton { export class NativeButton {
element : UniNativeViewElement; element : UniNativeViewElement;
button : UIButton; button : UIButton | null;
constructor(element : UniNativeViewElement) { constructor(element : UniNativeViewElement) {
// 接收组件传递过来的UniNativeViewElement
this.element = element; this.element = element;
this.button = new UIButton(type=UIButton.ButtonType.system)
super.init() super.init()
this.bindView();
// 在 swift target-action 对应的方法需要以OC的方式来调用,那么OC语言中用Selector来表示一个方法的名称(又称方法选择器),创建一个Selector可以使用 Selector("functionName") 的方式。
const method = Selector("buttonClickAction")
// button 添加点击回调
button.addTarget(this, action = method, for = UIControl.Event.touchUpInside)
this.bind();
} }
// element 绑定原生view // element 绑定原生view
bind() { bindView() {
this.element.bindIOSView(this.button); // 初始化原生 UIButton
this.button = new UIButton(type=UIButton.ButtonType.system)
// 构建方法选择器
const method = Selector("buttonClickAction")
// button 绑定点击回调方法
button?.addTarget(this, action = method, for = UIControl.Event.touchUpInside)
// UniNativeViewElement 绑定原生 view
this.element.bindIOSView(this.button!);
} }
// 更新button文字
updateText(text : string) { updateText(text : string) {
this.button.setTitle(text, for = UIControl.State.normal) // 更新 button 显示文字
this.button?.setTitle(text, for = UIControl.State.normal)
} }
/** /**
...@@ -33,14 +34,15 @@ export class NativeButton { ...@@ -33,14 +34,15 @@ export class NativeButton {
* 在 swift 中,所有target-action (例如按钮的点击事件,NotificationCenter 的通知事件等)对应的 action 函数前面都要使用 @objc 进行标记。 * 在 swift 中,所有target-action (例如按钮的点击事件,NotificationCenter 的通知事件等)对应的 action 函数前面都要使用 @objc 进行标记。
*/ */
@objc buttonClickAction() { @objc buttonClickAction() {
// 发送事件 //构建自定义 UniNativeViewEvent 对象
let event = new UniNativeViewEvent("customClick") let event = new UniNativeViewEvent("customClick")
//触发自定义事件
this.element.dispatchEvent(event) this.element.dispatchEvent(event)
} }
destroy() { destroy() {
UTSiOS.destroyInstance(self) // 释放 UTS 实例对象,避免内存泄露
UTSiOS.destroyInstance(this)
} }
} }
...@@ -80,6 +80,6 @@ export class NativeTimePicker { ...@@ -80,6 +80,6 @@ export class NativeTimePicker {
} }
destroy() { destroy() {
UTSiOS.destroyInstance(self) UTSiOS.destroyInstance(this)
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册