2017-08-09 42 views
0

我想返回我在我的Xcode项目中所做的值。 Int值是在步进器的@IBAction函数中进行的。如何从swift 3中的@IBAction函数返回一个Int变量?

@IBAction func stepper(_ sender: UIStepper) -> Int { 
    let Number: Int = Int(sender.value) 
    return Number 
print(Number) 

该系统给我这个错误: “方法声明@IBAction必须返回 '无效'(not'Int')”。

+0

没有理由这样做,因为您不直接调用步进器,系统正在为您调用它。那个回报值应该在哪里结束? – Connor

+2

@IBAction这些是事件。他们不应该返回任何结果 –

+0

在类级别为View控制器类使用'var',比如'var stepperValue:Number?',然后在'@ IBAction'方法内使用该变量'stepperValue'。 'IBAction's不能返回值。 – Annjawn

回答

1

@IBAction是一个内置的属性,用于激发将根据用户的交互执行某些任务并且不能返回值/对象的方法。你可以做的是触发其他动作,或初始化动作方法中的其他全局/局部变量。

错误 - Methods declared @IBAction must return 'Void' (not'Int')只是意味着IBAction方法不能返回任何内容,并且必须返回void又没有。

基于使用步进的价值为UIButton这是你可以做 -

在类级别的视图控制器声明一个变量

var stepperValue: Int = 0 { 
    didSet{ 
     // use stepperValue with your UIButton as you want 
    } 
} 

然后是@IBAction您的评论 -

@IBAction func stepper(_ sender: UIStepper){ 
    stepperValue = Int(sender.value) 
} 

每次,stepperValue被设定在@IBAction方法中的代码块insid e didSet观察员将会触发并且stepperValue的当前值可以在didSet观察者代码块内进行访问,以用于您想要的任何逻辑。或者,您可以简单地将整个didSet观察程序块代码放入IBAction方法stepper的内部。

或者,您可以编写另一种方法func modifyMyButton(_ stepperval: Int)将您的逻辑放在那里,并从IBAction方法中调用此方法。

0

@IBAction func是基于系统的功能,基于用户交互的事件触发。他们不会回报你任何东西。如果你愿意,他们会为你调用函数。您需要描述您尝试实施的场景。

+6

这应该是一个评论,而不是一个答案。 – Annjawn

+0

这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/ review/low-quality-posts/16986081) –

相关问题