gpt4 book ai didi

ios - 从 Url Scheme 在 View Controller 上设置值

转载 作者:行者123 更新时间:2023-11-29 10:26:16 25 4
gpt4 key购买 nike

当我使用我的 url scheme 启动应用程序时,我很难预填一个文本字段。当应用程序启动时尚未在内存中,该值未被设置(或者我认为被 viewDidLoad 或类似的否决)。

我走的归结路径如下所示:

// AppDelegate.m
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
UINavigationController *nav = (UINavigationController *)[[application keyWindow] rootViewController];

MainViewController *main = (MainViewController *)[nav topViewController];

[main setLabelText:@"this should be shown on screen"];

return YES;
}

ViewController 位于 UINavigationController

// MainViewController.m
@interface MainViewController ()

@property (weak, nonatomic) IBOutlet UILabel *someLabel;

@end

@implementation MainViewController

- (void)viewDidLoad {
[super viewDidLoad];
self.someLabel.text = @"this is actually shown on screen";
}

- (void)setLabelText:(NSString *)text
{
self.someLabel.text = text;
}

@end

所以标签显示“这实际上显示在屏幕上”,而不是我在 AppDelegate 中设置的文本。设置断点时,其原因相当明显,我认为,因为 viewDidLoad 是在 setLabelText 之后调用的。

是否有更可靠的路径来从我缺少的自定义 url 方案中预填充文本字段?

最佳答案

试试这个:

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
UINavigationController *nav = (UINavigationController *)[[application keyWindow] rootViewController];

MainViewController *main = (MainViewController *)[nav topViewController];
main.view;

[main setLabelText:@"this should be shown on screen"];

return YES;
}

View 是延迟加载的,因此它会在第一次需要时加载。

关于ios - 从 Url Scheme 在 View Controller 上设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32120396/

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