我正在创建一个简单的“解决方案”应用程序,但在将当前 View Controller 转换为 MasterViewControllet 时我遇到了一个问题 - 我想这样做是为了设置它的一些变量。 我收到的错误是“无法将‘UINavigationController’类型的值 (0x10c534670) 转换为‘Resolution_App.MasterViewController’ (0x10ac97d00)。” 这是我的主要 Storyboard: 这是我的“添加新分辨率” View Controller 中的代码 请就如何正确转换有什么建议吗?
class EditViewController: UIViewController {
@IBOutlet weak var resolutionTitle: UITextField!
@IBOutlet weak var achievedDate: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func saveButton(sender: AnyObject) {
var newResolution = ["name":resolutionTitle.text,"achievingDate":achievedDate.text,"startingDate":"\(NSDate())"] as Dictionary<String,String>
var destinationController = presentingViewController as! MasterViewController
destinationController.objects.insert(newResolution, atIndex: 0)
destinationController.notifyTableViewForNewInsertion()
destinationController.saveDateToFile()
self.dismissViewControllerAnimated(true, completion: {})
}
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
}
最佳答案
呈现模态 EditViewController 的 View Controller 是包含 MasterViewController 而不是 MasterViewController 本身的 UINavigationController。您应该创建一个协议(protocol)和一个委托(delegate)来在 EditViewController 和 MasterViewController 之间传递数据。您可以找到有关协议(protocol)的更多信息 here .
或者说:
var destinationController = presentingViewController.viewControllers[0] as! MasterViewController
关于ios - 使用 UINavigationController 时将 View Controller 转换到 MasterViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33906806/