swift - 执行 segue 后,文本字段永久位于标签中
问题描述
我有一个具有 2 个按钮和 2 个文本字段的视图控制器,以及具有 1 个标签的第二个视图控制器。目前,如果我按下 buttonOne,第二个视图控制器中的标签将更改为“文本字段 1”,当我按下 buttonTwo 时,相同的标签再次显示“文本字段 1”。理想情况下,我希望标签在按下 buttonOne 时显示“文本字段”,在按下 buttonTwo 时显示“文本字段 1”。下面是使用的 2 个视图控制器以及我正在使用的情节提要和模拟器的屏幕截图。我认为问题是,secondController.myString = textField.text!
但我不知道如何解决它。任何帮助表示赞赏。
故事板
模拟器
第一个视图控制器:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var textField1: UITextField!
var isButtonClicked: Bool = false
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
isButtonClicked = false
}
@IBAction func buttonOne(_ sender: Any) {
if textField.text != "" {
isButtonClicked = true
performSegue(withIdentifier: "segue", sender: self)
}
}
@IBAction func buttonTwo(_ sender: Any) {
if textField1.text != ""{
isButtonClicked = true
performSegue(withIdentifier: "segue", sender: self)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var secondController = segue.destination as! SecondViewController
secondController.myString = textField.text!
secondController.myString = textField1.text!
}
}
第二个视图控制器:
import UIKit
class SecondViewController: UIViewController {
@IBOutlet weak var label: UILabel!
var myString = String()
}
override func viewDidLoad() {
super.viewDidLoad()
label.text = myString
}
解决方案
这是因为您只设置了 textField1 的文本。您可能想要的是在第二个 ViewController 中设置 myString 取决于用户按下了哪个按钮。
在情节提要中,将您的第一个按钮的标签设置为 1,将第二个按钮的标签设置为 2,然后准备使用此按钮
let button = sender as! UIButton
if button.tag == 1 {
secondController.myString = textField.text!
} else {
secondController.myString = textField1.text!
}
也不要忘记执行 segue 并将 sender 作为此 perform segue 方法的 sender 参数
performSegue(withIdentifier: "segue", sender: sender)
推荐阅读
- amazon-web-services - Kops 在为 NS 记录进行 DNS 查找时创建/更新集群错误
- glsl - GLSL 片段着色器中的曲线旋转
- c# - 通过拖放移动画布上的控件
- java - Java 密钥库未能通过 PKCS12 完整性检查,但 keytool 有效
- jquery-ui - 可调整大小的 Jquery 边界
- angular - angular - 仅为使用它们的单个组件导入 3D 派对库样式
- javascript - 无法使用 Javascript 作为 BSF 采样器中的选定语言在 Jmeter 中发送 HTTP Post 请求
- javascript - 复选框在第一次单击时不会向 Vue 对象传递任何内容
- amazon-web-services - 如何验证 AWS 实例是否具有静态 IP
- python - PrettyPrinter - 在开始和结束括号的不同行上打印输出