在頁面跳轉時,若想用pushViewController,則必須在AppDelegate設置UINavigationController,否則pushViewController無效。
並且用pushViewController從A跳往B后,在B頁面自帶“Back”按鈕返回上一頁。類似於
這樣設置,在AppDelegate中
1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2 self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]]; 3 UIViewController *controllerA = [[ViewController alloc]init]; 4 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:controllerA]; 5 6 self.window.rootViewController = nav; 7 [self.window makeKeyAndVisible]; 8 9 return YES; 10 }
在controllerA中的跳轉頁面方法中這樣寫
-(void)turnToOtherController{ ControllerB *controllerB = [[ControllerB alloc]init]; [self.navigationController pushViewController:controllerB animated:YES]; }
這樣,導航條就會一直存在。若不想要導航條,那么在AppDelegate這樣寫
1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2 self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]]; 3 UIViewController *controllerA = [[ViewController alloc]init]; 4 self.window.rootViewController = controllerA; 5 [self.window makeKeyAndVisible]; 6 7 return YES; 8 }
而下面這種方法是通用的,無需設置rootViewController。
[self presentViewController:mainView animated:YES completion:nil];//controller自帶的屬性
下面的則需要
[self.navigationController pushViewController:mainView animated:YES]; //必須在AppDelegate設置UINavigationController,否則pushViewController無效。 //並且使用pushViewController后,在B頁面,會自帶一個“Back”按鈕返回上一頁。