0

//这是以编程方式包含我的按钮操作的函数

func didSetCategory(info: FitnessCenterModel) {
    myButton.addTarget(self, action: #selector(Function(d: info)), for: .touchUpInside)    
     }

// 我的按钮目标选择器函数

func Function(d:FitnessCenterModel ) {
print(info)
}

但我无法通过,因为编译器抛出错误“'#selector' 的参数不引用'@Objc' 方法、属性或初始化程序

4

1 回答 1

1

选择器不是指方法调用,而是指方法本身。

你在这里做什么:

#selector(Function(d: info))

正在传递一个参数Function并从中创建一个选择器。你不能这样做。选择器必须没有参数。那么如何传递info参数呢?

在您的类中创建一个名为selectedCategory

var selectedCategory: FitnessCenterModel!

在调用之前addTarget,分配info给上述属性:

selectedCategory = info

Function创建另一个使用参数调用的方法。

func buttonClicked() {
    Function(d: selectedCategory)
}

更改您的addTarget调用以使用 abuttonClicked作为选择器:

#selector(buttonClicked)
于 2017-09-19T06:06:02.323 回答