我在 ViewController VC 中有一个 TextLabel,只要用户在其中放置文本,它将接收用户的输入。然后,按下按钮,TextLabel 上的文本将传递到 SecondView VC 上的标签上。但问题是我尝试了多种方法将 TextLabel 中的文本设置为 secondaryView VC 上的 Label。
这是我尝试的第一种方法:
这是我的 ViewController.swift 文件。
class ViewController: UIViewController {
var text: String = ""
@IBOutlet weak var mainViewTextLabel: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.destination is SecondaryView {
let vc = segue.destination as? SecondaryView
vc?.text = "\(mainViewTextLabel!)"
}
}
}
@IBAction func onButtonTap(_ sender: Any) {
}
}
这是我的 secondaryView.swift 文件:
import UIKit
class SecondaryView: UIViewController {
var text:String = ""
@IBOutlet weak var secondaryViewLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
secondaryViewLabel?.text = text
}
}
当我运行应用程序并在 TextField 中键入任何文本并按按钮转到 SecondaryView VC 时,那里没有文本。
如果有人知道将文本从 View 传递到另一个 View 的另一种方法,或者文本显示的方式,我将不胜感激。
最佳答案
我认为您有几个问题。
首先,您在 viewDidLoad
中调用 prepare(for:...)
。这个函数不是你自己调用的。您为其提供一个实现,系统会在转场之前调用它。
第二个是您传递的是对 UITextField
的引用,而不是该文本字段的文本。
也许这样的东西会更好:
class ViewController: UIViewController {
var text: String = ""
@IBOutlet weak var mainViewTextLabel: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do anything else you need to do when loading
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.destination is SecondaryView {
let vc = segue.destination as? SecondaryView
vc?.text = mainViewTextLabel.text ?? ""
}
}
}
关于ios - 将文本从 View 中的 TextLabel 传递到另一个 View 中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68550865/