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

Ios 声明的方法必须返回void(不是float),ios,swift,uibutton,ibaction,Ios,Swift,Uibutton,Ibaction,我试图使用一个标准的UIButton函数返回两个浮点值,宽度和高度。我添加了“->Float”,但我遇到了这个错误。如果我将其更改为“->Void”,那么在Void函数中会留下意外的非Void返回值。我做错了什么 @IBOutlet weak var buttonValue: UIButton! @IBAction func smallB(_ sender: Any) -> Float { var inital = 2 let divisble = 2 var

我试图使用一个标准的UIButton函数返回两个浮点值,宽度和高度。我添加了“->Float”,但我遇到了这个错误。如果我将其更改为“->Void”,那么在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

}

iAction函数可由用户在任何UIElement(如按钮、开关、段控制器)上的交互调用。它的响应(返回类型)返回到用户界面元素,如果您使用iAction并将该操作附加到界面生成器,则代码中可能无法获得浮点值

如果已将方法与Interface Builder按钮元素连接,请从
iAction
方法中删除返回类型。若您的操作是从IBOutlet元素生成的,那个么返回值对您来说是毫无意义的

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

   // also remove following return statements
   // return width
   //  return height
}
但是,如果您确实希望返回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)")
}
func smallBTest(\usender:Any)->CGSize{
//行动内容
//更新您的返回声明,如
返回CGSize(宽度:宽度,高度:高度)
}
let size:CGSize=smallBTest(按钮值)
打印(“大小:宽度=\(大小.宽度)--高度=\(大小.高度)”)
//或者你也可以试试这个
@iAction func smallB(uu发送方:任意){
let size:CGSize=smallBTest(发送方)
打印(“大小:宽度=\(大小.宽度)--高度=\(大小.高度)”)
}

iAction功能可由用户在任何UI元素(如按钮、开关、段控制器)上的交互调用。它的响应(返回类型)返回到用户界面元素,如果您使用iAction并将该操作附加到界面生成器,则代码中可能无法获得浮点值

如果已将方法与Interface Builder按钮元素连接,请从
iAction
方法中删除返回类型。若您的操作是从IBOutlet元素生成的,那个么返回值对您来说是毫无意义的

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

   // also remove following return statements
   // return width
   //  return height
}
但是,如果您确实希望返回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)")
}
func smallBTest(\usender:Any)->CGSize{
//行动内容
//更新您的返回声明,如
返回CGSize(宽度:宽度,高度:高度)
}
let size:CGSize=smallBTest(按钮值)
打印(“大小:宽度=\(大小.宽度)--高度=\(大小.高度)”)
//或者你也可以试试这个
@iAction func smallB(uu发送方:任意){
let size:CGSize=smallBTest(发送方)
打印(“大小:宽度=\(大小.宽度)--高度=\(大小.高度)”)
}

您不能从iAction方法返回值。因此,改变你的方法作为

@IBAction func smallB(_ sender: Any) {
 // your logic
}
并移除
返回宽度
返回高度


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

不能从iAction方法返回值。因此,改变你的方法作为

@IBAction func smallB(_ sender: Any) {
 // your logic
}
并移除
返回宽度
返回高度



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

现在,我在返回宽度和高度旁边有一个“void函数中意外的非void返回值”。从iBaction中删除返回宽度和返回高度我只是在为jonpeter添加注释,根据他的问题,他从IBAction返回宽度和高度。因此他需要从IBAction方法中删除此部分。您的答案很好。但是您也可以使用tuple而不是CGSize。对于最后的回答,我深表歉意。smallB func和smallBTest func中的操作内容有什么区别?@jonpeter iAction是一个可以通过用户交互在任何UI元素(如按钮、开关、段控制器)上调用的函数。它的响应(返回类型)返回到用户界面元素,您可能无法在代码中获得浮点值,如果您使用iAction并将该操作附加到接口生成器,则返回宽度和高度旁边有“void函数中意外的非void返回值”。删除返回宽度,从您的IBAction返回高度我只是为jonpeter添加注释,根据他的问题,他从IBAction返回宽度和高度。因此他需要从IBAction方法中删除此部分。您的答案很好。但是您也可以使用tuple而不是CGSize。对于最后的回答,我深表歉意。smallB func和smallBTest func中的操作内容有什么区别?@jonpeter iAction是一个可以通过用户交互在任何UI元素(如按钮、开关、段控制器)上调用的函数。它的响应(返回类型)返回到用户界面元素,您可能无法在代码中获得浮点值,如果您使用iAction并将该操作附加到接口生成器,您希望向谁返回值?全局变量如果您不返回变量,则返回代码。可以为变量赋值。这是通过赋值运算符
=
完成的。如果需要返回多个值,则可以使用元组!我需要返回宽度和高度,哈哈。元组在这种情况下有什么帮助?您想向谁返回值?全局变量您不返回变量,而是返回代码。可以为变量赋值。这是通过赋值运算符
=
完成的。如果需要返回多个值,则可以使用元组!我需要返回宽度和高度,哈哈。元组在这种情况下有什么帮助?我有,但是你能解释一下全局变量值在函数中是如何更新的吗?@jonpeter什么问题。您是否删除了返回语句
返回宽度、返回高度
。解释问题我有,但你能解释一下函数中全局变量值将如何更新吗?@jonpeter什么问题。您是否删除了返回语句
返回宽度、返回高度
。解释问题