-
我有一个对象数组。
-
每个对象都有一个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((