ios - 另一个 ViewController 中的 UILabel.text 返回 nil
问题描述
我试图通过单击另一个 ViewController 中的按钮来更改一个 ViewController 中标签中的文本。
class Home: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
var add = AddNew()
@IBAction func buttonChangeText(_ sender: Any) {
add.printText(text: "TEXT")
}
这是第一个视图控制器的代码
class AddNew: UIViewController {
@IBOutlet weak var labelTextText: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
func printText(text:String) {
labelTextText?.text = text
}
这是第二个vc的代码。如果我尝试更改它,它不会做任何事情。我也尝试打印它,它只是打印为零。如果我从同一个视图控制器打印或更改它,它确实有效。
任何想法将不胜感激。谢谢!
解决方案
我假设您正在使用 segue 在控制器之间切换,所以首先向 AddNew ViewController 添加一个文本属性,然后将您的 prepareForSegue 更改为
if segue.identifier == "yourSegueName" {
let addNewVC = segue.destinationViewController as! AddNew
AddNew?.text = "TEXT"
}
然后,当您加载 AddNew VC 时,将 labelTextText 更改为您之前定义的文本变量
推荐阅读
- python - 如何让 Jupiter 在下拉菜单中自动显示一个对象中的所有功能?
- r - 在 r 中读取 dataset.train 和 dataset.test
- python - 递归更改目录python
- arrays - 要记录的 Powershell 数组枚举
- sql - SQL - 根据每个唯一 ID 的滚动窗口获取计数
- regex - 正则表达式以“https”、“http”或“/”开头,用于 MVC 中的属性
- ios - 框架动画时Swift PDFView跳转
- java - SpringBoot 控制器无法解析名称为“home”的视图
- git - 为什么存在冲突时cherry-pick和merge之间存在不一致
- python - 编写一个函数,通过添加字符以某种方式修改某个字符串