gpt4 book ai didi

objective-c - 使用 URL 方案打开应用程序时出现奇怪的 UI 行为

转载 作者:行者123 更新时间:2023-11-29 04:26:22 24 4
gpt4 key购买 nike

对我来说,解释这一点的最简单方法是上传一个测试应用程序,因此我删除了所有不必要的内容,并将一个简单的项目上传到 SendSpace。

http://www.sendspace.com/file/z86g0z

我正在编写一个应用程序,它将从 Mobile safari 接收自定义 URL,例如“plasma://hello-world”。然后这些由我的应用程序处理,并在屏幕上显示通知。

在测试应用程序中,主类是一个单例,并且有一个“测试”按钮,该按钮演示了当您通过 URL 打开它时会发生什么。您会看到屏幕上标签中显示的自定义链接以及顶部的绿色通知标签,然后该标签会消失。在此过程中,Xcode 控制台显示此......

2012-09-05 21:53:29.719 PlasmaLinker[2866:f803] Link: plasma:Test+Link
2012-09-05 21:53:29.778 PlasmaLinker[2866:f803] Show Alert: Success - Link Received
2012-09-05 21:53:35.779 PlasmaLinker[2866:f803] Remove Alert

一切正常。

现在,我通过输入“plasma://hello-world”从 Mobile Safari 启动它,我按 Enter 键,Safari 切换到我的应用程序,控制台显示完全相同的输出(使用您启动它的任何 URL),但是我在用户界面中什么也没得到。该链接不会放置在文本框中,也不会显示通知。

我做错了什么?使用 URL 启动后,您可以再次单击测试按钮并查看 UI 元素根据需要发生变化。它让我发疯,但我不知道如何让它在通过 URL 启动时工作。有人可以解释一下吗?

亲切的问候

等 ionic

最佳答案

获取PlasmaLinker_ViewController的单例方法将返回一个与 Storyboard创建并添加到主窗口的实例不同的实例。

一个有效的示例(在您的应用程序委托(delegate)中)

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {

NSString *link = [NSString stringWithFormat:@"%@",url];
vc = (PlasmaLinker_ViewController*) self.window.rootViewController;
[vc processLink:link];

return YES;

}

另一个选项是覆盖 View Controller 的 -(id)initWithCoder:(NSCoder *)decoder 并在该方法中将共享实例设置为 self

+ (PlasmaLinker_ViewController *) sharedInstance
{
return _sharedInstance;
}

-(id)initWithCoder:(NSCoder *)decoder {

NSLog(@"In initWithCoder!");
if (!_sharedInstance) {
if (self = [super initWithCoder:decoder]) {
_sharedInstance = self;
}
}
return _sharedInstance;
}

关于objective-c - 使用 URL 方案打开应用程序时出现奇怪的 UI 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289884/

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