我尝试使用标准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
}
答案 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 width
,return height
。
如果你想使用宽度和高度,将它们作为全局变量。