关于Navigation犯的一些错
ios中有两种呈现ViewController的方式,一种是push一种是present。这两种有一定的区别,首先是界面弹出的方式,其次是工作的原理,push这种方式类似一个栈, push一个viewController就相当于向栈中压入一个viewController,最后所有的视图都是存在栈中的,而present则不是以栈的形式工作的,它是独立的。
下面分别是两种调用方式
[self.navigationController pushViewController:(UIViewController*) animated:(BOOL)];
[self presentViewController:(UIViewController*) animated:(BOOL) completion:^(void)completion];
从源码可以看出来,pushViewController是作用于navigationController 的。也就是说,如果想要使用pushViewController来进行界面的跳转,就必须保证当前页面有导航栏(navigationController )。至于presentViewController,就没有这个限制条件了,在当前页面没有导航栏的时候,也可以使用。
之前没有搞清楚self presentViewController与self.navigationController presentViewController的区别,两者的区别就在于前者呈现出来的视图是没有navigation的,后者是在当前已有的navigationController的基础上再present视图,这时候present出来的视图是带有navigation,而且用的是当前的navigation。