Ios 塞格。。从任意位置到第一个场景(在ApplicationIDBecomeActive之后)

Ios 塞格。。从任意位置到第一个场景(在ApplicationIDBecomeActive之后),ios,uistoryboard,uistoryboardsegue,Ios,Uistoryboard,Uistoryboardsegue,我有一个故事板应用程序,有十个场景 有各种各样的分段,例如PreToFront,UserToBombs,BombsToPre等等 我的问题是:假设用户退出应用程序(我的意思是,按下iPad主页按钮) 当用户再次打开应用程序时,applicationIDBecomeActive 不管怎样,我都想回到最初的场景 因此,无论用户在哪一个场景,我都希望它在应用程序打开时切换到一个特定的场景。(事实上,最理想的情况是初始场景。) 这怎么可能呢 此解决方案不使用segues,但我认为如果您为所需的视图控制

我有一个故事板应用程序,有十个场景

有各种各样的分段,例如
PreToFront
UserToBombs
BombsToPre
等等

我的问题是:假设用户退出应用程序(我的意思是,按下iPad主页按钮)

当用户再次打开应用程序时,
applicationIDBecomeActive

不管怎样,我都想回到最初的场景

因此,无论用户在哪一个场景,我都希望它在应用程序打开时切换到一个特定的场景。(事实上,最理想的情况是初始场景。)


这怎么可能呢

此解决方案不使用segues,但我认为如果您为所需的视图控制器提供一个ID,它可以工作:

-(void)applicationDidBecomeActive:(UIApplication *)application {

   [self presentViewControllerAnimated:NO];

 }


- (void)presentViewControllerAnimated:(BOOL)animated {

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YourStoryboard" bundle:nil];
    UINavigationController *destinationViewNavigationController = [storyboard instantiateViewControllerWithIdentifier:@"destination"];
    [self presentViewController:destinationViewNavigationController animated:animated completion:nil];     
}

此解决方案不使用segues,但我认为如果您为所需的视图控制器提供ID,它可以工作:

-(void)applicationDidBecomeActive:(UIApplication *)application {

   [self presentViewControllerAnimated:NO];

 }


- (void)presentViewControllerAnimated:(BOOL)animated {

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YourStoryboard" bundle:nil];
    UINavigationController *destinationViewNavigationController = [storyboard instantiateViewControllerWithIdentifier:@"destination"];
    [self presentViewController:destinationViewNavigationController animated:animated completion:nil];     
}

如果您需要比上面所说的更复杂的逻辑,您可以使用展开序列

1) 在要进入的视图控制器中实现此方法:

- (IBAction)unwind:(UIStoryboardSegue *)unwindSegue
2) 对于上述视图控制器,请在界面生成器中创建名为展开到该视图控制器的分段以及该方法

3) 在
applicationIDBECOMEACTIVE
中获取俯视图控制器。如下所示(但请记住,您应该递归地获得显示的视图控制器):

4) 调用
-(void)performsguewithidentifier:(NSString*)identifier sender:(id)sender
在具有特定标识符的topController上


快乐编码

如果您需要比上面所说的更复杂的逻辑,您可以使用展开序列

1) 在要进入的视图控制器中实现此方法:

- (IBAction)unwind:(UIStoryboardSegue *)unwindSegue
2) 对于上述视图控制器,请在界面生成器中创建名为展开到该视图控制器的分段以及该方法

3) 在
applicationIDBECOMEACTIVE
中获取俯视图控制器。如下所示(但请记住,您应该递归地获得显示的视图控制器):

4) 调用
-(void)performsguewithidentifier:(NSString*)identifier sender:(id)sender
在具有特定标识符的topController上


快乐编码

除了“重置”应用程序上的第一个视图控制器外,没有任何其他详细信息,以下操作可能会根据您的需要执行

-(void)applicationDidBecomeActive:(UIApplication *)application
{
    UIStoryboard *storyboard = self.window.rootViewController.storyboard;
    UIViewController *firstViewController = [storyboard instantiateInitialViewController];
    self.window.rootViewController = firstViewController;  
} 

如果您的应用程序基于UINavigationController,您只需在
ApplicationIDBecomeActive:

中调用
[mainNavigationController PoptorootViewController激活:是]
,而无需任何其他详细信息,除非“重置”应用程序上的第一个视图控制器已激活,以下操作可能会满足您的需要

-(void)applicationDidBecomeActive:(UIApplication *)application
{
    UIStoryboard *storyboard = self.window.rootViewController.storyboard;
    UIViewController *firstViewController = [storyboard instantiateInitialViewController];
    self.window.rootViewController = firstViewController;  
} 

如果你的应用程序基于UINavigationController,你可以在
ApplicationIDBecomeActive:

中调用
[mainNavigationController PoptorootViewController Inimated:YES]
调用
?感谢所有这些伟大的答案,我将对此进行调查@我需要你的帮助。我可以给你发电子邮件吗?当然可以!!!!不过,您可能会将其发送到错误的位置:)您的初始视图控制器是一个
UINavigationController
?感谢所有这些伟大的答案,我将对此进行调查@我需要你的帮助。我可以给你发电子邮件吗?当然可以!!!!不过,您可能会将其发送到错误的位置:)