ios - 使用 UINavigationController 时将 View Controller 转换到 MasterViewController

标签 ios swift model-view-controller

我正在创建一个简单的“解决方案”应用程序,但在将当前 View Controller 转换为 MasterViewControllet 时我遇到了一个问题 - 我想这样做是为了设置它的一些变量。 我收到的错误是“无法将‘UINavigationController’类型的值 (0x10c534670) 转换为‘Resolution_App.MasterViewController’ (0x10ac97d00)。” 这是我的主要 Storyboard: enter image description here 这是我的“添加新分辨率” 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/

相关文章:

ios - 无法在 ios 上使用 AdMob 获取任何测试广告

objective-c - shouldAutorotate 返回 true 但不旋转

ios - 给 UITextView 一个可点击的 URL 链接

ios - Firebase Cloud Messaging - 检查现有或可用的主题

node.js - NodeJS/Express MVC 模式中的 REST 数据源

javascript - 如何在 JavaScript 中访问模型中列表的属性?

ios - Xcode 7 UI 测试目标语言环境和区域设置

ios - 我如何向使用点击手势识别器的图像添加事件指示器

java - 与 MVC Servlet/JSP 应用程序相比,Java EE 应用程序如何扩展?

javascript - iOS 7 进入全屏模式(添加到主屏幕按钮)