您是否在 App Delegate 中引用了导航控制器,其中包含您要在其上调用方法的顶视图控制器?如果是这样,UINavigationController 有一个名为topViewController
. 您可以将其转换为您的自定义视图控制器类:
CustomViewController *customController = (CustomViewController *)[aNavController topViewController];
[customController myCustomMethod];
正如我所说,如果您在 App Delegate 中引用了导航控制器,则此方法将起作用。
如果没有,另一种方法可能是使用 NSNotificationCenter。在“topViewController”中注册一个自定义通知名称,然后从您的 App Delegate 发布该通知。如果在每个视图控制器可见时注册通知,并在它消失时取消注册,则只有可见视图控制器会收到通知:
注册,在你的情况下,可能在viewDidAppear:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myCustomMethod:) name:@"MyCustomNotification" object:nil];
发布来自您的 App Delegate 的通知:
[[NSNotificationCenter defaultCenter] postNotificationName:@"MyCustomNotification" object:myAccount];
不要忘记删除观察者viewDidDisappear:
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"MyCustomNotification" object:nil];