ios - 如何从不同的 swift 文件中更改 UILabel.text?
问题描述
当我尝试从 ViewController 以外的其他 swift 文件更改 UIlabel 时,出现 nil 值错误。
//ViewController.swift
import UIKit
class MainViewController: UIViewController {
@IBOutlet weak var myLabel: UILabel?
override func viewDidLoad() {
super.viewDidLoad()
myLabel?.text = "foo"
}
func label(stringVal: String? = nil){
myLabel?.text = stringVal!
}
}
//Source.swift
//Do working here and get a string value from struct
// I saved that string in stringValue
let VC = MainViewController()
VC.label(stringVal: stringValue!)
请让我知道我做错了什么。
解决方案
视图控制器控件不是在构造函数中创建的,它应该为空。您需要在运行label
方法之前显示该视图控制器并避免错误。
一个有效的选项是在构造函数中设置一个内部变量viewDidLoad
,当标签已经创建时,你可以这样做
myLabel.text = stringValue // stringValue is comes from constructor.
推荐阅读
- python-2.7 - 检查 Pyspark Dataframe 中的重复项
- javascript - 角度 4 嵌套 formArray 找不到带有路径的控件:'segmentRows3 -> 1 -> segmentId3'
- c++ - C++ 中的位集初始化
- javascript - 如何检查侦听器事件是否为被动事件?
- java - Eclipse 无法访问项目路径中的 mysql 连接器驱动程序
- c# - 动作委托在 mvvm wpf 中发送空值
- javascript - 如何定位单选按钮的值
- google-sheets - 自动刷新自定义功能:COUNTIF 语句:所有工作表的范围 + 单元格引用作为标准
- sql-server - 从选择中插入每一行后执行功能
- r - 更改多色分组条形图中轮廓的颜色