将参数传递给函数

时间:2017-09-19 05:56:45

标签: swift3 target-action xcode8

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

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

//我的按钮目标的选择器功能

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

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

1 个答案:

答案 0 :(得分:1)

选择器不引用方法调用,而只引用方法本身。

你在这做什么:

#selector(Function(d: info))

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

在名为selectedCategory的类中创建一个属性:

var selectedCategory: FitnessCenterModel!

在致电addTarget之前,请将info分配给上述媒体资源:

selectedCategory = info

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

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

更改addTarget来电,使用buttonClicked作为选择器:

#selector(buttonClicked)