现在的一些主流的框架基本上是按 分栏控制器和导航控制器配合使用的
导航控制器负责横向切换
分栏控制器是控制纵向的切换
我们应该研究 一些主流框架的实现原理 在此基础上提升的速度才会比较快
这里只是给大家抛砖,希望大家能够学习到一些知识
我们所说的栈控制器 -本质上就是一个数组 ,用于管理每个页面
直接上代码了:
// // AppDelegate.h // 88888-tabbar #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @end
// // AppDelegate.m // 88888-tabbar #import "AppDelegate.h" #import "GPoneController.h" #import "GPTwoController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; UITabBarController *tab = [[UITabBarController alloc]init]; GPoneController *one = [[GPoneController alloc]init]; one.view.backgroundColor = [UIColor blueColor]; UINavigationController *nvcOne = [[UINavigationController alloc]initWithRootViewController:one]; nvcOne.tabBarItem.title = @"你的"; GPTwoController *two = [[GPTwoController alloc]init]; two.view.backgroundColor = [UIColor greenColor]; UINavigationController *nvcTwo = [[UINavigationController alloc]initWithRootViewController:two]; nvcTwo.tabBarItem.title = @"我的"; NSArray *controllers = @[nvcOne,nvcTwo]; tab.viewControllers = controllers; self.window.rootViewController = tab; [self.window makeKeyAndVisible]; // Override point for customization after application launch. return YES; } - (void)applicationWillResignActive:(UIApplication *)application { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. } - (void)applicationDidEnterBackground:(UIApplication *)application { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } - (void)applicationWillEnterForeground:(UIApplication *)application { // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. } - (void)applicationDidBecomeActive:(UIApplication *)application { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } - (void)applicationWillTerminate:(UIApplication *)application { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } @end
// // GPoneController.h // 88888-tabbar #import <UIKit/UIKit.h> @interface GPoneController : UIViewController @end
// // GPoneController.m // 88888-tabbar #import "GPoneController.h" #import "GPBookListController.h" @interface GPoneController () @end @implementation GPoneController - (void)viewDidLoad { [super viewDidLoad]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(0, 100, 200, 30); [btn setTitle:@"我的书库" forState:UIControlStateNormal]; btn.backgroundColor = [UIColor redColor]; [btn addTarget:self action:@selector(btnTouch) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn]; // Do any additional setup after loading the view. } -(void)btnTouch { GPBookListController *book = [[GPBookListController alloc]init]; book.view.backgroundColor = [UIColor grayColor]; [self.navigationController pushViewController:book animated:YES]; NSLog(@"btnTouch"); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end
// // GPTwoController.h // 88888-tabbar #import <UIKit/UIKit.h> @interface GPTwoController : UIViewController @end
// // GPTwoController.m // 88888-tabbar #import "GPTwoController.h" @interface GPTwoController () @end @implementation GPTwoController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end
//
// GPBookListController.h
// 88888-tabbar
#import <UIKit/UIKit.h>
@interface GPBookListController :
UIViewController
@end
// // GPBookListController.m // 88888-tabbar #import "GPBookListController.h" #import "GPnextController.h" @interface GPBookListController () @end @implementation GPBookListController - (void)viewDidLoad { [super viewDidLoad]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(0, 200, 100, 30); [btn setTitle:@"跳转到你的页面" forState:UIControlStateNormal]; btn.backgroundColor = [UIColor orangeColor]; [self.view addSubview:btn]; [btn addTarget:self action:@selector(btnTouch) forControlEvents:UIControlEventTouchUpInside]; // Do any additional setup after loading the view. } -(void)btnTouch { GPnextController *nvc = [[GPnextController alloc]init]; [self.navigationController pushViewController:nvc animated:YES]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end
// // GPnextController.h // 88888-tabbar // #import <UIKit/UIKit.h> @interface GPnextController : UIViewController @end
// // GPnextController.m // 88888-tabbar #import "GPnextController.h" @interface GPnextController () @end @implementation GPnextController - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor purpleColor]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(0,200, 200, 30); [btn setTitle:@"设置个人信息" forState:UIControlStateNormal]; btn.backgroundColor = [UIColor cyanColor]; [self.view addSubview:btn]; [btn addTarget:self action:@selector(btnTouch) forControlEvents:UIControlEventTouchUpInside]; // Do any additional setup after loading the view. } -(void)btnTouch { NSLog(@"设置成功"); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-08 19:55:47