1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2 // 設置window 3 self.window = [[UIWindow alloc] init]; 4 self.window.frame = [[UIScreen mainScreen] bounds]; 5 self.window.backgroundColor = [UIColor grayColor]; // window是灰色背景 6 [self.window makeKeyAndVisible]; 7 8 9 // 設置UINavigationController10 UINavigationController *nvController = [[UINavigationController alloc] init];11 nvController.view.backgroundColor = [UIColor blueColor]; // 設置藍色背景12 self.window.rootViewController = nvController;13 14 return YES;15 }
1 // 配置第一個子控制器 2 ViewControllerOne *vc1 = [[ViewControllerOne alloc] init]; 3 [nvController pushViewController:vc1 animated:YES]; 4 5 // 配置第二個子控制器 6 ViewControllerTwo *vc2 = [[ViewControllerTwo alloc] init]; 7 [nvController pushViewController:vc2 animated:YES]; 8 9 // 配置第三個子控制器,這是棧頂的控制器10 ViewControllerThree *vc3 = [[ViewControllerThree alloc] init];11 [nvController pushViewController:vc3 animated:YES];
1 - (void)applicationDidBecomeActive:(UIApplication *)application {2 // 必須在加載完畢激活app后,所有的view的尺寸位置才能確定3 UINavigationController *nvController = (UINavigationController *)self.window.rootViewController;4 NSLog(@"%@", NSStringFromCGRect(nvController.view.frame)); // 整個導航控制器的frame5 NSLog(@"%@", NSStringFromCGRect(nvController.navigationBar.frame)); // 導航條的frame6 }7
1 @PRoperty(nonatomic,copy) NSArray *viewControllers; // The current view controller stack.
1 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; // Uses a horizontal slide transition. Has no effect if the view controller is already in the stack.
1 // 配置第一個子控制器2 ViewControllerOne *vc1 = [[ViewControllerOne alloc] init];3 [nvController pushViewController:vc1 animated:YES];
1 ViewControllerOne *vc1 = [[ViewControllerOne alloc] init];2 [nvController addChildViewController:vc1];
1 // 配置第一個子控制器2 ViewControllerOne *vc1 = [[ViewControllerOne alloc] init];3 nvController.viewControllers = @[vc1];
1 // 傳入一個viewController作為 nvController的 rootViewController2 nvController = [[UINavigationController alloc] initWithRootViewController:vc1];
1 - (IBAction)goToThree { 2 // 配置第三個子控制器 3 ViewControllerThree *vc3 = [[ViewControllerThree alloc] init]; 4 [self.navigationController pushViewController:vc3 animated:YES]; 5 } 6 7 - (IBAction)gotoFour { 8 // 配置第四個子控制器 9 ViewControllerFour *vc4 = [[ViewControllerFour alloc] init];10 [self.navigationController pushViewController:vc4 animated:YES];11 }
1 // 這里是第三個,要回到第二個2 - (IBAction)backtoTwo {3 [self.navigationController popViewControllerAnimated:YES];4 }
1 // 現在是第三個控制器的view,要回到第一個控制器的view2 - (IBAction)backtoOne {3 // 其實這里拿不到第一個控制器vc1的引用4 // [self.navigationController popToViewController:vc1 animated:YES];5 6 // 直接彈出,直到導航器的rootViewController,就是第一個子控制器vc1了7 [self.navigationController popToRootViewControllerAnimated:YES];8 }
1 @property(nonatomic,copy) NSString *title; // Localized title for use by a parent controller.
1 - (void)viewDidLoad {2 [super viewDidLoad];3 self.navigationItem.title = @"第一個view";4 }
1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 self.navigationItem.title = @"第二個控制器"; 4 5 // 設置左上角的item 6 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"我要回去" style:UIBarButtonItemStylePlain target:nil action:nil]; 7 8 // 設置右上角的item 9 // 使用bar按鈕10 UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:nil action:nil];11 12 // 使用自定義view13 UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithCustomView:[UIButton buttonWithType:UIButtonTypeContactAdd]];14 15 // 這是這是從右到左排列顯示16 self.navigationItem.rightBarButtonItems = @[item1,item2];17 }
1 // 第二個控制器2 - (void)viewDidLoad {3 [super viewDidLoad];4 ...5 // 設置第二個控制器的“返回”樣式6 self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"速速回2" style:UIBarButtonItemStylePlain target:nil action:nil];7 }
1 - (void)applicationDidBecomeActive:(UIApplication *)application {2 // 必須在加載完畢激活app后,所有的view的尺寸位置才能確定3 UINavigationController *nvController = (UINavigationController *)self.window.rootViewController;4 NSLog(@"%@", NSStringFromCGRect(nvController.view.frame)); // 整個導航控制器的frame5 NSLog(@"%@", NSStringFromCGRect(nvController.navigationBar.frame)); // 導航條的frame6 }
最后的點擊鏈接圖:
新聞熱點
疑難解答