iOS : passing data between viewController (destination embedded in a NavigationController)

标签 ios objective-c design-patterns model-view-controller storyboard

刚学IOS开发,想在ViewController之间传递数据。我正在使用 Storyboard 和“prepareForSegue”方法。

我的主要问题是关于我在许多论坛和博客中发现的有关这种信息“传输”的模式。当源 Controller 需要将数据传递给目标 Controller 时,源 Controller 使用以下代码访问目标 Controller :

[segue destinationViewController] 

这很好,源 Controller 不需要确切地知道目标 Controller 的详细信息(我正在使用协议(protocol))。

但是当目标 Controller 是一个NavigationController(一个嵌入在NavigationController中的ViewController)时,似乎推荐的做法是:

[[segue destinationViewController] topViewController]

但如果我这样做,则意味着源 Controller 必须知道目标 Controller 是一个 NavigationController。如果可能,我想避免这种情况?

也许我做错了什么?还有其他方法吗?

源 Controller 是“详细信息页面”(来自 TableView),目标 Controller 是“编辑页面”。

欢迎任何帮助。

谢谢

最佳答案

UINavigationController *navTmp = segue.destinationViewController;

YourController * xx = ((YourController *)[navTmp topViewController]);
xx.param = value;

关于iOS : passing data between viewController (destination embedded in a NavigationController),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21101642/

相关文章:

ios - 从 swift 到 Objective C 的 NSDictionary 问题

ios - 对展开转场进行故障排除

c# - .NET 中 OOP 设计模式的可下载代码示例?

ios - 无法构建包含 Objective-C Tesseract 库的 Swift 应用程序

ios - 有什么方法可以使用 AVCaptureSession 在 1 秒内捕获固定数量的帧?

ios - 核心数据重命名属性 "deleted"

java - 使用java上传文件

design-patterns - 设计模式和架构模式有什么区别?

Storyboard中的 iOS 7 状态和导航栏与应用程序中的高度不同

html - 当 NSURLResponse 对于 textEncodingName 返回 nil 时检测 HTML 编码