任何了解导航源的方法?
例如,导航堆栈具有A / B / C三个视图控制器。 如果弹出C,当显示B时,任何知道导航的方法都是从C到B?
提前多多感谢。
答案 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");
}
}