Swift:如何将参数传递给一个本身也是参数的函数?

时间:2015-07-08 03:04:52

标签: swift

它是这样的:

var i = 0
button.addTarget(self, action:"showContent", forControlEvents: UIControlEvents.TouchUpInside)

和功能" showContent"是这样的:

func showContent(i: Int) {
    //do sth.
}

我想在触摸该按钮时将变量i传递给函数showContent,我该怎么办?

1 个答案:

答案 0 :(得分:0)

在目标行动模式中,您无法做到这一点。您可以使用"showContent",在这种情况下,您的功能将是:

func showContent() {

}

...或者您可以添加冒号("showContent:"),在这种情况下您的函数将是:

func showContent(sender : UIButton) {
    // do something with sender
}

这有助于强化更广泛的模型/视图/控制器模式,使您的视图难以“智能”#34;相反,您的模型和控制器对象应该处理i。一个按钮只显示它所说的内容,并告诉控制器何时点击它。

您可以阅读i,并以适当的方法回复它。例如:

class ViewController : UIViewController {
    var i = 0
    var button = UIButton(type: .System)
    var label = UILabel()

    override func viewDidLoad() {
        button.addTarget(self, action:"showContent", forControlEvents: UIControlEvents.TouchUpInside)
    }

    func showContent() {
        i++
        label.text = "Current value of i: \(i)"
    }
}