【问题标题】:switch from one navigation Controller to another navigation View Controller从一个导航控制器切换到另一个导航视图控制器
【发布时间】:2013-03-12 01:02:46
【问题描述】:

我正在开发一个应用程序,其中我使用了两个导航控制器和 uilocalNotification

第一个 NavigationViewController N1 有两个 ViewControllers v1 和 v2 第二个 NavigationViewController N2 有两个 ViewControllers v3 和 v4

另外,当应用程序在后台时,如果出现 UILocalNotification 并且如果我点击它,应用程序应该检测显示哪个导航控制器和哪个视图控制器,然后切换到另一个导航控制器的视图控制器。

例如:- 如果显示 N1 中的 v2 ,则 点击通知后, 然后在N2显示切换到v3

如何做到这一点??

【问题讨论】:

    标签: iphone uiviewcontroller uinavigationcontroller


    【解决方案1】:

    只需将下面的方法粘贴到您的 AppDelegate.m 文件中,并在您想要更改 UINavigationController 时调用特定方法...

    例如:如果您在N1v2 中并且通知已更改,则调用如下方法...

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [appDelegate setRootViewControllerN2];
    

    使用下面的方法来切换带有动画的导航控制器..

    1. setRootViewControllerN1 : 用于设置 RootViewController 和 N1 navigationController。

    -(void)setRootViewControllerN1{
        self.window.rootViewController = N1;
        
        [self.window makeKeyAndVisible];
        CATransition *animation = [CATransition animation];
        [animation setDelegate:self];   
        [animation setType:kCATransitionFade];
        [animation setDuration:0.5];
        [animation setTimingFunction:[CAMediaTimingFunction functionWithName:
                                      kCAMediaTimingFunctionEaseInEaseOut]];
        [[self.window layer] addAnimation:animation forKey:kAnimationKey];
    }
    

    2。 setRootViewControllerN2 : 用于设置 RootViewController 和 N2 navigationController。

    -(void)setRootViewControllerN2{
        self.window.rootViewController = N2;
        
        [self.window makeKeyAndVisible];
        CATransition *animation = [CATransition animation];
        [animation setDelegate:self];   
        [animation setType:kCATransitionFade];
        [animation setDuration:0.5];
        [animation setTimingFunction:[CAMediaTimingFunction functionWithName:
                                      kCAMediaTimingFunctionEaseInEaseOut]];
        [[self.window layer] addAnimation:animation forKey:kAnimationKey];
    }
    

    【讨论】:

    • 不!实际上,当单击通知时,您如何确定当前显示的是哪个 viewcontroller 和哪个 navigationController ...???
    • 只需在 AppDelegate 或 UserDEfault 中创建一个 BOOL 变量,保存这个值并将其从 true 切换为 flase .. 当通知发生时检查是否为 true 然后调用第二种方法并设置它变量为假,否则调用第一个方法并将变量设置为真...
    • 我更早的想到了standardUserDefaults,但后来我认为会有一些标准的方式来解决这个问题。无论如何,谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    相关资源
    最近更新 更多