我是Objective-c的新手。我尝试在2个视图控制器之间发送数据(例如controllerA和controllerB),但我不断地需要这些数据,所以我在controllerB中使用_displaylink从controllerA调用方法。我在controllerA中使用播放器,我想在controllerB中显示时间等。如何获得controllerA的现有实例?
我尝试了两种不同的方法,但都创建了viewcontroller的新实例
示例1:
drop table if exists <table> tbl; select into <tabel> tbl from query;
示例2:
RootViewController *controller=(RootViewController *)self.presentedViewController;
当我使用这个解决方案时,我可以从controllerA调用该方法(但这是来自新实例的方法:()
我也尝试这个解决方案:
RootViewController *parent=self.parentViewController;
但是当我尝试调用该方法时,我得到了这个错误:
***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [MMDrawerController playerPositionS]:无法识别的选择器发送到实例0x7c406c00'
如何正确调用此方法的任何想法?
答案 0 :(得分:1)
In MVC as implemented in iOS/Objective-C,视图控制器引用共享模型,而不是彼此。他们应该观察该模型中的更改,然后相应地更新其UI。
观察变化的几种方法:
答案 1 :(得分:0)
只要您想要修改的视图控制器位于导航堆栈中,我就会尝试这样的操作来查找要修改其属性的视图控制器。
let childVCs = UIApplication.shared.keyWindow!.rootViewController?.childViewControllers
print("childvcs = \(childVCs)")
let myVC = childVCs[0]
let myOtherVC = childVCs[1]
myVC.someProperty = 100
myOtherVC.anotherProperty = 1000