如题
遇到这样一个需求 我这边是从登陆界面(无导航栏)压栈到其它界面 压栈后的界面有导航栏
代码如下
首先Appdelegate中代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self monitoringNetwork];
ViewController *v = [[ViewController alloc]init];
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:v];
self.window.rootViewController = nav;
return YES;
}
然后ViewController中代码
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationController.delegate = self;
self.navigationController.interactivePopGestureRecognizer.delegate = self;
self.edgesForExtendedLayout = UIRectEdgeNone;
self.view.backgroundColor = [UIColor whiteColor];
[self initUI];
}
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ([viewController isKindOfClass:[self class]]) {
[navigationController setNavigationBarHidden:YES animated:YES];
}else {
[navigationController setNavigationBarHidden:NO animated:YES];
}
}
这个是登陆界面push方法
#pragma mark 点击确定进入选择服务器地址界面
- (void)sureAction{
UIBarButtonItem *backIetm = [[UIBarButtonItem alloc] init];
backIetm.title = @"xxxx";
self.navigationItem.backBarButtonItem = backIetm;
SelectSiteController *s = [[SelectSiteController alloc]init];
[self.navigationController pushViewController:s animated:YES];
}
注意 要遵循 UINavigationControllerDelegate , UIGestureRecognizerDelegate这两个代理 其中
self.navigationController.interactivePopGestureRecognizer.delegate = self;
该方法 是为了防止登陆界面添加了手势动作 返回时手势失效(我遇到了这个情况,这句代码就好了)