Ios 从另一个类读取/写入UITexTField
我有一个视图,其中有几个文本字段,我想从viewController中读取,验证,然后调用另一个文件中另一个类中的函数来写出结果 我知道我可以返回结果并从ViewController中写入,但有些函数(此处未显示)有太多的输入和输出字段,因此将它们传回似乎非常复杂。我该怎么做?我能做吗?(或者我只是想写一些非常糟糕的代码?) 这是我目前拥有的简化版本: MainViewController.swift:Ios 从另一个类读取/写入UITexTField,ios,swift,Ios,Swift,我有一个视图,其中有几个文本字段,我想从viewController中读取,验证,然后调用另一个文件中另一个类中的函数来写出结果 我知道我可以返回结果并从ViewController中写入,但有些函数(此处未显示)有太多的输入和输出字段,因此将它们传回似乎非常复杂。我该怎么做?我能做吗?(或者我只是想写一些非常糟糕的代码?) 这是我目前拥有的简化版本: MainViewController.swift: import UIKit class ViewController: UIViewCont
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var fieldLength1: UITextField!
@IBOutlet weak var fieldLength2: UITextField!
@IBOutlet weak var fieldLength3: UITextField!
@IBOutlet weak var fieldLength4: UITextField!
@IBOutlet weak var fieldPerimeter: UITextField!
@IBOutlet weak var fieldArea: UITextField!
override viewDidLoad() {
super.viewDidLoad()
fieldLength1.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
fieldLength2.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
fieldLength3.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
fieldLength4.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
}
@objc func textFieldDidChange() _ textField: UITextField) {
if isValidEntry(textField: textField) {
// Here is where I would like to call the function in the other class
// Something like:
// MathFunc().perimeter(
// MathFunc().area
}
}
func isValidEntry() {
// ensure entries are only numbers and that enough info is present for calculations
}
}
MathFunctions.swift:
import Foundation
class MathFunctions {
func perimeter(l1: Double, l2:Double, l3:Double, l4:Double) -> Double {
let p = l1 + l2 + l3 + l4
// Here is where I would like to write the result to the UITextField
// Something like:
// fieldPerimeter.text = p //with some formatting not shown here
}
func area(width: Double, length:Double) -> Double {
let rectArea = width * length
// Here is where I would like to write the result to the UITextField
// Something like:
// fieldArea.text = rectArea //with some formatting not shown here
}
}
将MathFunctions更改为struct,并将其函数更改为
static
。现在,您可以在任何地方说MathFunctions.permiture()
。将MathFunctions更改为结构,并将其函数更改为静态。现在你可以在任何地方说MathFunctions.Permiture()
。首先,我认为FieldPermiture
和fieldArea
应该是标签,而不是文本字段。它们是输出,不是输入
其次,记住区域(宽度:长度:)
返回结果。调用视图控制器中的函数,并将结果推送到字段中
视图控制器被认为是将值推入标签的东西。首先,在我看来,fieldpermiture
和fieldArea
应该是标签,而不是文本字段。它们是输出,不是输入
其次,记住区域(宽度:长度:)
返回结果。调用视图控制器中的函数,并将结果推送到字段中
视图控制器应该是将值推送到标签中的东西。或者完全删除MathFunctions
类型,并使这两个函数免费。这两个都很好,但这不是我要问的。我想知道如何从这些函数中写入字段,而不是从视图控制器中写入。或者干脆完全删除MathFunctions
类型,并将这两个函数释放出来。这两个都很好,但这不是我要问的。我想知道如何从这些函数中写入字段,而不是从视图控制器中写入。我明白您的意思,但它们是字段-例如,另一个函数可能会反过来,使用面积和一个边来计算另一个边。但我认为你答案的第二部分确实澄清了这一点:我只是想写一些糟糕的代码。ViewController应该是将结果推送到显示器上的控制器,而不是函数。非常感谢。我明白你的意思,但它们是字段——例如,另一个函数可能会反过来,使用面积和一个边来计算另一个边。但我认为你答案的第二部分确实澄清了这一点:我只是想写一些糟糕的代码。ViewController应该是将结果推送到显示器上的控制器,而不是函数。非常感谢。