声明的方法必须返回void(不是float)

时间:2017-10-04 06:04:48

标签: ios swift uibutton ibaction

我尝试使用标准UIButton函数返回两个浮点值,宽度和高度。我添加了" - >浮"但是我受到了这个错误的欢迎。如果我将其更改为" - >空隙"然后我在void函数中留下了意外的非void返回值。我在这做错了什么?

@IBOutlet weak var buttonValue: UIButton!
@IBAction func smallB(_ sender: Any) -> Float {

    var inital = 2
    let divisble = 2

    var width: Float
    var height: Float



    if inital % divisble == 0
    {
        width = 0.14
        height = 0.07
        buttonValue.titleLabel?.text = "Big"
        inital + 1
    }
    else
    {
        width = 0.28
        height = 0.14
        buttonValue.titleLabel?.text = "Small"
        inital + 1
    }

    return width
    return height

}

2 个答案:

答案 0 :(得分:4)

IBAction函数可以通过用户交互在Button,Switch,Segment Controller等任何UIElements上调用/调用。并且它的响应(返回类型)返回到用户界面元素,如果您使用IBAction并将该操作附加到Interface Builder,则可能无法在代码中获取浮点值

如果已使用Interface Builder Button元素连接方法,则从IBAction方法中删除返回类型。如果您的行为是从IBOutlet元素生成的,那么返回值将毫无意义。

@IBAction func smallB(_ sender: Any) {
   // action contents

   // also remove following return statements
   // return width
   //  return height
}

但如果你真的想要回归身高和width(两个浮点值)作为对此函数调用的响应,然后您应该以编程方式调用它,并更改函数声明,如:

func smallBTest(_ sender: Any) -> CGSize {
   // action contents

  //Update your return statement like
  return CGSize(width: width, height: height)
}

let size: CGSize = smallBTest(<button instance > buttonValue)
print("Size: Width = \(size.width)  -- Height = \(size.Height)")

// or you can try this as well
@IBAction func smallB(_ sender: Any) {
  let size: CGSize = smallBTest(sender)
   print("Size: Width = \(size.width)  -- Height = \(size.Height)")
}

答案 1 :(得分:1)

您无法从IBAction方法返回值。所以改变你的方法

@IBAction func smallB(_ sender: Any) {
 // your logic
}

然后移除return widthreturn height

如果你想使用宽度和高度,将它们作为全局变量。