iOS没有导航栏进行push(压栈)

如题

遇到这样一个需求  我这边是从登陆界面(无导航栏)压栈到其它界面(登录之后无tabbar的主页、登录界面点击注册的界面等)  压栈后的界面有导航栏  说白了就登录界面无导航栏其它界面都得有

代码如下

首先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;

该方法  是为了防止登陆界面添加了手势动作   返回时手势失效(我遇到了这个情况,这句代码就好了

你可能感兴趣的:(iOS没有导航栏进行push(压栈))