在 ViewController 之间传递数据时出错
error passing data between ViewController
我有一个奇怪的问题。我有一个UITextField
我可以在里面写,文字直接显示在UITextView
。我正在使用 UITabBarController
在 UIViewController
之间切换。
我正在使用 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 之间传递时,数据没有保存。 (只有颜色没有保存)
无论出于何种原因,(看起来像一个错误),当 Selectable
时 UITextView
returns nil
的 textColor
属性在 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
}
我有一个奇怪的问题。我有一个UITextField
我可以在里面写,文字直接显示在UITextView
。我正在使用 UITabBarController
在 UIViewController
之间切换。
我正在使用 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 之间传递时,数据没有保存。 (只有颜色没有保存)
无论出于何种原因,(看起来像一个错误),当 Selectable
时 UITextView
returns nil
的 textColor
属性在 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
}