从邮件中打开自定义文件后调用哪种方法
Posted
技术标签:
【中文标题】从邮件中打开自定义文件后调用哪种方法【英文标题】:Which Method is Invoked Once I Open a Custom file from Mail 【发布时间】:2012-02-15 19:16:23 【问题描述】:短版:
当我退出应用程序(主页按钮)时,UIApplicationExitsOnSuspend
设置为NO
,并从邮件中打开一个自定义文件到我的应用程序中,调用UIViewController
的哪个方法?
或者,如何将我的 rootViewController 的 AppDelegate
设置为 -performSegueWithIdentifier
?这段代码安全吗?
UIViewController *vc = [self.window.rootViewController.childViewControllers objectAtIndex:0];
[vc performSegueWithIdentifier:@"ChiesaSegue" sender:vc];
更多详情:
我的应用程序带有情节提要“嵌入” 一个 导航控制器 有两个不同的UIViewControllers
,假设FirstVC
和SencondVC
连接在一起适当的 Segues。我通过设置我的 info.plist 文件将自定义文件扩展名(比如说 .q80)与我的应用程序相关联,我可以看到我的自定义文件与我的应用程序一起显示邮件中的图标。所有这些都可以正常工作。
我关闭应用程序(主页按钮),然后转到邮件,然后 "Open In.." 一个文件,应用程序打开,我正确处理 AppDelegate
中的传入 URL
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
现在,我希望能够在我的SecondVC
中加载这个导入 URL 的数据,但是每次我“打开..”文件时,我都会准确地返回旧数据当我按下主页按钮时,我离开它的方式。我的网址在application:openURL:sourceApplication:annotation
处理后不知道调用FirstVC
或SecondVC
哪个方法!我正在清理旧数据并在-viewDidLoad
和-viewWillAppear
中设置新数据。什么都没有发生!
如果您需要代码或我可能遗漏的其他详细信息,请告诉我。
【问题讨论】:
【参考方案1】:从后台返回时完全有可能不会调用任何视图控制器 viewWillLoad/Appear/etc 方法。如果您需要基于 openURL 应用程序委托方法中的事物在视图控制器中的某些行为,那么您必须显式触发它。您可以为此目的使用 NSNotification。或者,如果您的 openURL 方法正在修改某些应用程序模型状态,您可以在模型对象上使用键值观察。
【讨论】:
经过多次尝试和错误,我有两种方法可以做到这一点。一个是通过performSegueWithIdentifier
另一个是使用NSNotificationCenter,正如你所建议的。不过我得问一下,我必须在哪里removeObserver:name:object
?在dealloc
?或viewDidUnload
?还是两者兼而有之?
取决于您在哪里执行 addObserver。如果您在 init 中执行此操作,则需要在 dealloc 中撤消它。如果您在 viewDidLoad 中执行此操作,则需要在 viewDidUnload 中撤消它。关键是添加/删除调用必须平衡。以上是关于从邮件中打开自定义文件后调用哪种方法的主要内容,如果未能解决你的问题,请参考以下文章
我找到了一种使用 Formspree 无需后端即可直接从网站发送电子邮件的方法。但是我不知道如何在提交时自定义消息
织梦添加超过两百个自定义字段后在使用addfields调用自定义字段出错的解决方法