我正在编写一个应用程序,您需要以模态方式显示登录屏幕,并且该应用程序有一个标签栏。iPhone DropBox应用像实现 - 翻转标签栏以显示登录屏幕
我已经添加标签栏直接到UIWindow。将其翻转到一个新的视图(登录视图)我已覆盖applicationDidFinishLaunching我检查用户是否有登录凭据,然后我不显示登录屏幕,否则(假设第一次使用或注销的情况下)我模态地呈现登录屏幕。我已经在应用程序内的设置选项卡中提供了注销选项。
我正在使用[[UIApplication sharedApplication]委托]调用在用户第一次登录时获取应用程序委托的实例。通过这种方式,我可以访问属于应用程序委托的tabBarController(与大多数情况一样)。但是,当我尝试从设置(未来生命周期某处)的注销选项调用loginViewController时,相同的调用[[UIApplication sharedApplication]委托]返回给我一个委托,我无法使用任何方法I已经定义。它在运行时给我“无法识别的选择器发送到实例”错误。
我需要了解究竟调用[[UIApplication sharedApplication]委托]返回的是什么?委托对象是否在应用程序生命周期期间返回更改? OR是整个应用程序生命周期中的单例实例吗?
其次,为了解决这个问题,我应该将tabBar添加到一个视图(包含在主窗口中)中,而不是直接将其添加到UIWindow中(如Tab Bar应用程序的模板所做的,似乎是标准做法) 。这种方法存在任何已知问题,或者可以这样做。任何人都试过这个?请告诉我。
谢谢 Dev。
感谢杰西......这些事情之一是你是“脑筋急躁”的,当你第二天早上回来看它时,它的那个愚蠢的陈述[appDelegate发布] ......感谢“过度”的好记忆公民: )...对于浪费你的时间感到抱歉,但如果它有帮助,你确信它返回了同一个单例对象,这让我再次以不同的视角穿过调试器,当我发现它时......再者, UIWindow中的tabBarController确实感觉到了这样做的正确方式,并且很高兴它在没有任何黑客攻击或损害设计的情况下工作:) – Dev 2010-08-17 07:34:12