在使用情节提要时不确定如何正确继承 UIApplication

Posted

技术标签:

【中文标题】在使用情节提要时不确定如何正确继承 UIApplication【英文标题】:Not sure how to properly subclass UIApplication while using storyboards 【发布时间】:2012-11-02 18:45:06 【问题描述】:

我想在 X 次用户不活动(未触发触摸事件)后返回故事板的初始视图控制器。经过一些研究,我发现检测不活动的最常见方法是触发 NSTimer 并在触发事件时重置间隔。为了检测触发的事件,我们在 UIApplication 的子类中重写 [UIApplication sentEvent:]。这是我有点卡住的部分。

我正在看这个项目作为参考

http://www.icodeblog.com/2011/09/19/timing-out-an-application-due-to-inactivity/

https://github.com/elc/ELCUIApplication

我不确定在使用情节提要时如何实现类似的功能。我尝试了类似于那个 github 项目的东西;我创建了一个新类,它是 UIApplication 的子类,覆盖了所需的方法,最后更改了主函数中的目标类(从我的 appdelegate 到继承 UIApplication 的新类)。这样做我得到了以下错误

如果要使用主故事板文件,应用委托必须实现 window 属性。

github 中的 appDelegate 是 NSObject 的子类,据我了解,它手动加载了他的窗口属性中的初始视图,而我的 appDelegate 是 UIResponder 的子类,它本身是 UIApplication 的超类。我不知道如何继续,我的 AppDelegate 中已经有 window 属性并已合成,但我不确定如何处理它。

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

听起来你把错误的参数改成了UIApplicationMain

UIApplicationMain 的默认调用如下所示:

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

第三个参数(默认为nil)是要使用的UIApplication 类的名称。如果为 nil,则应用仅使用 UIApplication

第四个参数是要使用的UIApplicationDelegate 类的名称。

听起来你改变了第四个参数,但你应该改变第三个参数:

return UIApplicationMain(argc, argv,
    NSStringFromClass([MyApplication class]),
    NSStringFromClass([AppDelegate class]));

【讨论】:

@rob +1 它适用于 xcode 4.5 作为 UIApplicationMain(argc, argv, NSStringFromClass([ELCUIApplication class]), NSStringFromClass([YouSaidItAppDelegate class]));谢谢...

以上是关于在使用情节提要时不确定如何正确继承 UIApplication的主要内容,如果未能解决你的问题,请参考以下文章

如何使用情节提要从自定义 uitableviewcell 正确启动弹出框转场

如何在情节提要中正确创建覆盖视图?

如何使用情节提要正确地转到嵌入式选项卡栏和导航控制器?

带有条件 ViewController 的情节提要

如何从情节提要中隐藏 UISearchbar

使用情节提要时关闭模式的正确方法是啥?