将Int属性从textfield传递回控制器

时间:2017-10-06 17:37:19

标签: ios swift delegates textfield

我正在尝试从textfield传递数据,使用委托返回上一个控制器。当我尝试在此调用中分配Int值时,我陷入困境。 这个问题相当容易,但我找不到简单的解决方案。我一直在尝试使用其他属性的不同方法来保存这个值,但是没有成功。我应该如何正确转换 budgetAmount.text

protocol BudgetDelegate: class {
func enteredBudgetData(info: String, info2: Int)
 }

class AddBudgetViewController: UIViewController {

var budget: Budget?
weak var delegate: BudgetDelegate? = nil

@IBOutlet weak var budgetName: UITextField!
@IBOutlet weak var budgetAmount: UITextField!

//
@IBAction func saveContent(_ sender: UIButton) {
    if ((budgetName.text?.isEmpty)! && (budgetAmount.text?.isEmpty)!) {
        navigationController?.pop(animated: true)
    } else {
      ->  delegate?.enteredBudgetData(info: budgetName.text!, info2: budgetAmount.text!) 
        navigationController?.pop(animated: true)
        }
    }
}

错误无法转换类型'字符串'的值预期参数类型' Int'

2 个答案:

答案 0 :(得分:3)

协议方法的info2参数属于Int,但您传递budgetAmount.text!,当然是String。您需要传递Int

也许您需要将文本字段中的文本转换为Int

delegate?.enteredBudgetData(info: budgetName.text!, info2: Int(budgetAmount.text!) ?? 0)

顺便说一句 - 你正在对!运算符进行几次可怕的使用。你应该花时间学习选项以及如何安全地使用它们。

答案 1 :(得分:0)

因此,根据您的问题,您只想传递来自Int的{​​{1}}数据。根据您的描述,您对委派没有任何问题。

UITextField转换为String非常简单:

示例:

Int