在 ViewController 之间传递数据时出错

error passing data between ViewController

我有一个奇怪的问题。我有一个UITextField我可以在里面写,文字直接显示在UITextView。我正在使用 UITabBarControllerUIViewController 之间切换。 我正在使用 class 保存数据(写在 TabBarController.swift):

public class ModelData {

    var text = ""
    var color:UIColor? = nil

}

保存数据的代码(写在ViewController.swift):

override func viewDidDisappear(animated: Bool) {
    let model = (self.tabBarController as TabBarViewController).model
    model.color = textview.textColor
    model.text = textview.text
}

以及给出数据的代码(写在SecondViewController.swift):

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    let model = (self.tabBarController as TabBarViewController).model

    textview.textColor = model.color
    textview.text = model.text

}

所以,我的问题是:因为我使用 UItextField 可以在其中写入,所以我在 UITextView 中禁用了用户交互,但现在我需要启用该选项,因为我想要滚动UITextView。但是现在当我在 ViewController 之间传递时,数据没有保存。 (只有颜色没有保存)

无论出于何种原因,(看起来像一个错误),当 SelectableUITextView returns niltextColor 属性在 Interface Builder 中未选中。如果在代码中将 selectable 属性 设置为 false 则没有问题。因此,解决方法是在 Interface Builder 中选中 Selectable,并在 viewDidLoad:

中将其设置为 false
override func viewDidLoad() {
    super.viewDidLoad()

    // Set selectable to false here so that the user can't select the
    // textview text, but User Interaction is still enabled to allow them
    // to scroll it.  This is a workaround for a problem in Interface
    // Builder which causes the textColor property to return nil if Selectable
    // is unchecked in Interface Builder.
    textview.selectable = false
}