gpt4 book ai didi

ios - 应用程序 :openURL 的 NSNotificationCentre

转载 作者:行者123 更新时间:2023-11-29 12:31:38 24 4
gpt4 key购买 nike

当我的应用从 URL Scheme 接收到打开时,我想在我的主视图 Controller 中调用一个方法,以便我可以处理它。

问题是我似乎无法从应用委托(delegate)调用 ViewController 方法。我确实注意到一些委托(delegate)方法允许通知 NSNotificationCentre,但 openURL 似乎不是其中之一。

是否有任何其他方法可用于通过通知或标准方法调用从委托(delegate)调用 ViewController 方法?

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

最佳答案

直接调用。好吧,我解释一下:我想你正在使用 Storyboard,并且你在 AppDelegate 中没有任何对你的 viewController 的引用。

现在,您已经说过可以在 MainViewController 中触发方法,很可能您的 MainViewController 在 UINavigationController 中(或不在),我将在本示例中将此 mainController 称为:MainViewController。

好吧,首先在您的 MainViewController.h(接口(interface))中公开您要调用的方法,例如。

@interface MainViewController : UIViewController

-(void)wakeUpFromUrlWithParameters:(NSDictionary *)parameters;

现在在您的 AppDelegate.m 中,导入您的 mainViewController,

#import "AppDelegate.h"
#import "MainViewController.h"

@implementation AppDelegate

您可以看到您的 appDelegate 有一个属性调用窗口。那么,在您的 appDelgate 的任何方法中,您都可以使用此窗口属性。

如果您的 mainViewController 在 UINavigationController 中,您需要:

UINavigationController *navController = (UINavigationController *)self.window.rootViewController;

MainViewController *mainViewController = (MainViewController *)[navController.viewControllers firstObject];

// And you can call you methods also with a dict of parameters o any other thing

[mainViewController wakeUpFromUrlWithParameters:nil];

如果您的 mainViewController 是根用户(没有 Navigation Controller 很容易)

 MainViewController *mainViewController = (MainViewController *)self.window.rootViewController;

// And you can call you methods also with a dict of parameters o any other thing

[mainViewController wakeUpFromUrlWithParameters:nil];

当然 NotificationCenter 是另一个选项。 (你有 userInfo)。

关于ios - 应用程序 :openURL 的 NSNotificationCentre,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27515000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com