此问题与this one非常相似,但有一个例外。我没有让普通的导航控制器启动我的默认视图控制器,而是添加了一个额外的视图控制器,它只是一个启动页面,允许我显示加载对话框/等
在主视图控制器的“viewDidLoad”中,我使用“presentModalViewController”启动它,如此
- (void)viewDidLoad
{
SplashPage *splashScreen = [[[SplashPage alloc] initWithNibName:@"SplashPage" bundle:nil viewControllerObj:self] autorelease];
[self presentModalViewController:splashScreen animated:NO];
[super viewDidLoad];
}
然后在我的启动视图中我做了一些事情(第一个是基本的连接检查,以确保应用程序可以访问互联网)。
第一次启动应用程序时,我会在现在活动的启动视图控制器的viewDidLoad中进行检查(如此)
- (void)viewDidLoad
{
[super viewDidLoad];
[self.viewController invokeConnectivityCheck];
}
问题是这个 - 当这个失败并且用户在启动前的“加载”屏幕上“卡住”(基本上)当它们从跳板返回时这个启动视图控制器中调用了什么方法(这里支持多任务处理)?
我尝试过以下操作,但是当我关闭应用程序并返回时,每个都没有触发
我在这里缺少什么是iOS5友好的?或者主要/默认视图控制器是否因为我在这里使用的模态方法而被调用而不是启动?
提前谢谢
答案 0 :(得分:1)
appliationDidBecomeActive
。
文件:
调用此方法是为了让您的应用程序知道它已从中移动 非活动状态到活动状态。这可能是因为您的应用程序 由用户或系统发起。应用程序也可以返回 如果用户选择忽略中断,则进入活动状态 发送的(如来电或短信) 临时申请到非活动状态。
答案 1 :(得分:0)
所以看起来我使用的模式不适合导航控制器驱动(通过appDelegate)风格的iPhone应用程序,所以我没有让viewDidLoad方法中的默认/主视图控制器处理这个模态我推动了这个逻辑关闭appDelegate本身所以它不是每个视图控制器的直接责任。
如果你打算做这样的事情,我会在appDelegates中调用这个?使用当前活动视图控制器的方法(基本上我在appDelegate中保持状态,因此它知道焦点中的视图控制器)
- (void)applicationDidBecomeActive:(UIApplication *)application
{
SplashPage *splashScreen = [[[SplashPage alloc] initWithNibName:@"SplashPage" bundle:nil] autorelease];
[[self activieViewController] presentModalViewController:splashScreen animated:NO];
ConnectivityWebService* service = [[[ConnectivityWebService alloc] initWithAppDelegate:self] autorelease];
[service verifyConnectivity];
}
这个的另一个要求是在appDelegate中回调以关闭模态,如此
- (void)callBackAfterConnectivityCheck
{
[[self activieViewController] dismissModalViewControllerAnimated:NO];
}
希望这对其他人有帮助(并不是它直接回答了问题) - 如果有人有合法的答案,我会赞同这一点,因为这主要是为了历史/对所使用的模式的另一种看法。