在开始之前,我不得不说这个项目标志着我生命中第一次深入使用Swift和XCode。我大约一个星期前就开始了(老实说,我已经走了多远)。我不太了解我在做什么,但我愿意学习。
现在,问我的问题。
我正在尝试从一个视图控制器获取文本字段以从另一个视图控制器更改标签。我以为我做对了,但它一直在向我抛出语法错误等等。修复之后,我会运行代码并获得SIGABRT错误。这是我的代码。
这是标签,在BasicViewController下(这不是BasicViewController中的所有内容,我只是剪掉了我认为相关的内容)
class BasicViewController: UIViewController {
@IBOutlet weak var NameField: UILabel!
var NameText = String()
override func viewDidLoad() {
super.viewDidLoad()
NameField.text = NameText
}
这是EditCharController下的文本字段。这是发生SIGABRT错误的地方。 (同样,缺乏代码也是如此。)
class EditCharController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var NameTextField: UITextField!
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var NameTextDest : BasicViewController = segue.destinationViewController as! BasicViewController //Specifically, this is the line that it happens at.
NameTextDest.NameText = String(NameTextField.text)
}
}
目前,XCode告诉我将var标签更改为let标签,但即使我这样做,也会发出此错误。
Could not cast value of type 'UITabBarController'(?!?) (0x10310c8b0) to 'Project.BasicViewController' (0x1019a0060).
最后我检查过,我没有在代码中的任何地方引用UITabBarController。为什么我收到此消息?
对于非常好的深入教程的任何建议都将非常感谢。
答案 0 :(得分:0)
尝试
let index = 0 // change this to the tab index of the BasicViewController.
let NameTextDest : BasicViewController = (segue.destinationViewController as! UITabBarController).viewControllers[index] as! BasicViewController
NameTextDest.NameText = NameTextField.text!