首页 > 代码库 > UI: 使用 UINavigationController 实现导航
UI: 使用 UINavigationController 实现导航
导航控制器,它允许你 push 视图控制器到一个栈中,并可以将视图控制器从栈中 pop 出来,在栈顶的视图控制器是 top 视图控制器,用户可以看到这个视图控制器。也只有 top 视图控制器能被用户看到,可以通过将其 pop 出,或者 push 另外一个视图控制器到栈中进行改变。
使用导航控制器的 initWithRootViewController:的方法对其初始化,把根视 图控制器当做它的参数。然后将导航控制器的 view 添加到 windows:
.h:
#import <UIKit/UIKit.h>@interface AppDelegate : UIResponder <UIApplicationDelegate>@property (strong, nonatomic) UIWindow *window;@property (nonatomic, strong) UINavigationController *navigationController;@end
.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ViewController *mainVC = [[ViewController alloc]init]; //self.window.rootViewController = mainVC; self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]]; [self.window makeKeyAndVisible]; self.navigationController = [[UINavigationController alloc]initWithRootViewController:mainVC]; [self.window addSubview:self.navigationController.view]; return YES;}
创建第二个视图控制器 SecondViewController
我计划在第一个视图控制器出现在屏幕上 5 秒后把第二个视图控制器 push 到它的顶部 :
在第一个视图中:
//推出第二个视图- (void) pushSecondViewController{ SecondViewController *secondController = [[SecondViewController alloc]init]; [self.navigationController pushViewController:secondController animated:YES];}- (void) viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; //5s后调用pushSecondViewController方法 [self performSelector:@selector(pushSecondViewController) withObject:nil afterDelay:5.0f];}
从导航控制器堆栈 pop 或者移出一个视 图控制器要如何处理呢?答案很简单:使用导航控制器中 popViewControllerAnimated:的方 法,在第二个视图控制器显示在屏幕上 5 秒钟后我们把它自动的 pop 出栈:
- (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; [self performSelector:@selector(goBack) withObject:nil afterDelay:5.0f];}- (void)goBack{ [self.navigationController popViewControllerAnimated:YES];}
UI: 使用 UINavigationController 实现导航
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。