ios - 不断在两个 View Controller iOS 之间传递数据

标签 ios objective-c xcode uiviewcontroller rootview

我是 objective-c 的新手。我尝试在2个 View Controller (例如controllerA和controllerB)之间发送数据,但我不断需要这些数据,所以我在controllerB中使用_displaylink从controllerA调用方法。我在 controllerA 中使用播放器,我想在 controllerB 中显示时间等。如何获取controllerA的现有实例?

我尝试了两种不同的方法来做到这一点,但都创建了 viewcontroller 的新实例

示例1:

 RootViewController *controller=(RootViewController *)self.presentedViewController;

示例2:

RootViewController *parent=self.parentViewController;

当我使用这个解决方案时,我可以从 controllerA 调用方法(但这是来自新实例的方法 :( )

我也尝试了这个解决方案:

RootViewController *rootController =(RootViewController*)[[(AppDelegate*)
                                                               [[UIApplication sharedApplication]delegate] window] rootViewController];

但是当我尝试调用方法时,出现了这个错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MMDrawerController playerPositionS]: unrecognized selector sent to instance 0x7c406c00'

知道如何正确调用此方法吗?

最佳答案

In MVC as implemented in iOS/Objective-C , View Controller 引用一个共享模型,而不是彼此引用。他们应该观察该模型的变化,然后相应地更新他们的 UI。

观察变化的几种方法:

  • > KVO - 将对模型值的更改连接到观察者中的目标和选择器
  • > Notification - 允许模型“发布”它已更改,并允许 View Controller “观察”这些发布。
  • > Delegation - 这是最直接的(最被过度使用的,IMO)方法,其中一个对象通过一些定义明确的接口(interface)(协议(protocol))为另一个对象提供完成功能。

关于ios - 不断在两个 View Controller iOS 之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40848147/

相关文章:

objective-c - PresentModalViewController 稍后才会触发

ios - 如何在testflight中更改信息部分下的开发者名称

ios - 在 WKWebView 中注入(inject)全局对象

ios - iOS 8 上 Swift 1.2 中的全局弹出框功能

objective-c - Apple Silicon 上的dispatch_time计算失败

c++ - 在 iOS 上使用 C++ 代码,创建静态库或与 Objective C 混合使用?

ios - 获取 ALAsset 的 MIME 类型

iphone - 将 NSString 绘制到 PDF 页面上

xcode - 通过命令行进行Xcode“构建和存档”

objective-c - Xcode 在哪里存储 3rd 方 API secret /密码/id