我有一个XIB
,我想在其中更改标签文本。在那里,我创建了一个function
来设置标签文本。
在另一个控制器中,我正在使用该xib
,我想更改此控制器中的标签。如何访问该标签?现在我正在做一些事情,但我认为 e 重新创建视图并且标签没有更新。
XIB 类
import UIKit
class MessageView: UIView {
@IBOutlet var messageLabel: UILabel!
func setMessage(error: String) {
self.messageLabel.text = error
}
}
视图控制器
func updateMessage(error: Error){
let messageView = MessageView()
messageView.setMessage(error: error.localizedDescription)
}
问题是您没有调用需要更改标签文本的 messageView 实例,而是创建 messageView 的新实例,然后更改标签。
最好的做法是使用协议/委托模式在对象之间进行通信并从那里更改文本。
您需要做的就是在视图控制器中添加消息视图的引用。如果您使用故事板,我假设您只是添加@IBOutlet weak var messageView : MessageView!
然后您可以像这样访问标签messageView.messageLabel.text = “some message”
或者只是使用协议和委托。