如何在选择器中传递自定义参数


  • 我有一个对象数组。

  • 每个对象都有一个ID。

  • 我有一个UIStackeview。

  • 每个对象都作为一个排列的子视图(也是一个堆栈视图(动态添加到UIStackwiew中。

  • 每个子视图都有一个UIMapGestureRecognizer。

  • 识别器的操作是一个选择器。

如何传递选择器中的对象

子视图的点击手势:

subview.addGestureRecognizer(UITapGestureRecognizer(target: self, action: Selector))

点击触发的功能(为了更好地理解而修改(:

@objc func addModelToScene(sender: AnyObject, myWantedObject: MyObject) {
let anchor = AnchorEntity(plane: .horizontal)
anchor.name = "modelAnchor"
self.arView.scene.addAnchor(anchor)

var cancellable: AnyCancellable? = nil
cancellable = ModelEntity.loadModelAsync(named: myWantedObject.mesh)
.sink(receiveCompletion: {error in
print("Unexpected error: (error)")
cancellable?.cancel()
}, receiveValue: {entity in
anchor.addChild(entity)
cancellable?.cancel()
})
}

总的来说,问题是:

如何将自定义参数传递到选择器

在循环中使用此选项

subview.tag = arrayIndexOfObject

然后在选择器方法内部

@objc func addModelToScene(_ sender:UITapGestureRecognizer) {
let index = sender.view!.tag
// use it to access the object from the array
}

为什么不将消息直接指向有问题的对象而不是自身?subview.addGestureRecognizer(UIMapGestureIdentifizer(目标:subview,操作:Selector((

最新更新