我如何在课外访问IBOutlet?

时间:2018-10-18 11:58:20

标签: ios swift

我有一个XIB,我想在其中更改标签文本。我在那里创建了function来设置标签文本。

在另一个控制器中,我使用的是xib,我想在该控制器中更改该标签。如何访问该标签?现在我正在做某事,但是我认为e重新创建视图并且标签未更新。

XIB类

import UIKit

class MessageView: UIView {
    @IBOutlet var messageLabel: UILabel!

    func setMessage(error: String) {
        self.messageLabel.text = error
    }
}

ViewController

func updateMessage(error: Error){
       let messageView = MessageView()
       messageView.setMessage(error: error.localizedDescription)
 }

2 个答案:

答案 0 :(得分:0)

问题是您没有调用需要更改标签文本的messageView实例,而是创建了messageView的新实例,然后更改了标签。

最好的做法是使用协议/委托模式在对象之间进行通信并从那里更改文本。

答案 1 :(得分:0)

您需要做的就是在viewcontroller中添加messageView的引用。如果您假设使用的故事板只是添加@IBOutlet weak var messageView : MessageView!,然后只需访问messageView.messageLabel.text = “some message”

或者只使用协议和委托。