在开始之前,我不得不说,这个项目标志着我一生中第一次深入使用 Swift 和 XCode。我大约一周前开始了(老实说,我对自己所取得的进展印象深刻)。我对自己在做什么不太了解,但我愿意学习。
现在,回答我的问题。
我正在尝试从一个 View Controller 获取文本字段以更改另一个 View Controller 的标签。我以为我做得对,但它不断向我抛出语法错误等。修复该问题后,我将运行代码并收到 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。为什么我会收到此消息?
此外,任何有关良好深入教程的建议都将非常感激。
最佳答案
尝试
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!
关于ios - 文本字段和标签编辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37993528/