对于iOS,任何了解导航源的方法?

时间:2013-12-29 03:48:51

标签: ios uiviewcontroller uinavigationcontroller navigation

任何了解导航源的方法?

例如,导航堆栈具有A / B / C三个视图控制器。 如果弹出C,当显示B时,任何知道导航的方法都是从C到B?

提前多多感谢。

3 个答案:

答案 0 :(得分:1)

另一个简单的方法

首先在Appdelegate.m中声明UINavigationController

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:self.viewController];
self.window.rootViewController = nav;
[nav setNavigationBarHidden:YES];
[self.window makeKeyAndVisible];
return YES;
} 

之后,在第一个视图中,controller.m导入第二个视图控制器头文件

#import "B.h"

按钮操作

- (IBAction)butvie:(id)sender {
B*tab=[[Balloc]init];
[self.navigationController pushViewController:tab
                                     animated:YES];
}
C viewcontroller中的

来自B

- (IBAction)butvie:(id)sender {

[self.navigationController popViewController
                                     animated:YES];
}

答案 1 :(得分:0)

您可以手动跟踪此内容。您可以在AppDelegate类中保留一个全局变量,并在弹出特定的viewController时设置该变量。

评论后更新: 在这种情况下,您可以使用NSUserDefaults,也可以从poppedViewController发布NSNotification对象。虽然我不确定,但这些选项对您的使用效率有多高。

答案 2 :(得分:0)

您可以判断控制器是否出现,因为它已添加到堆栈中,或者是因为另一个控制器是使用isMovingToParentViewController从堆栈中弹出的。如果你在B中有这个代码,它会告诉你发生了什么:

-(void)viewDidAppear:(BOOL)animated {
    if ([self isMovingToParentViewController]) {
        NSLog(@"Coming from A");
    }else{
        NSLog(@"Coming from C");
    }
}