十分鐘搭建App主流架構,搭建app主流

來源:互聯網
上載者:User

十分鐘搭建App主流架構,搭建app主流
搭建主流架構介面

  • 0.達成效果

    Snip20150904_5.png
    • 我們玩iPhone應用的時候,有沒發現大部分的應用都是差不多的結構,下面的TabBar控制器可以切換子控制器,上面又有Navigation導航條
    • 我們本文主要是搭建主體的架構,資料暫時沒有添加
分析做項目的基本流程
  • 1.搭建項目主架構
    • (1)先搭建tabBarController(下面有一條)
    • (2)再搭建NavigationController(上面有一條,並且每個子控制器的不一樣)
  • 2.思考開發方式
    • (1)storyboard搭建(介面很少的時候使用)
    • (2)純程式碼搭建(介面超過5個的時候使用,易於管理,商業項目中,一般都使用這種方式)
從0開始搭建主流架構(純程式碼)1.準備工作
  • 環境部署

Snip20150904_11.png2.初步搭建基本介面
  • 第一步 設計目錄(根據模組化+MVC思想,建立基本檔案目錄與檔案)
    • 模組化思想建立目錄路徑(一般先在真實路徑下建立,再拖到項目中)
    • 自訂TabBarController

Snip20150904_4.png
  • 第二步 上代碼(在AppDelegate.m內設定視窗啟動根控制器)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    // 1.建立視窗    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];    // 2.設定視窗的根控制器    CYXTabBarController *tabBarVC = [[CYXTabBarController alloc]init];    self.window.rootViewController = tabBarVC;    // 3.顯示視窗    [self.window makeKeyAndVisible];    return YES;}
  • 第三步,在CYXTabBarController.m內建立並添加子控制器
- (void)viewDidLoad {    [super viewDidLoad];    // 1.添加第一個控制器    // 1.1 初始化    CYXOneViewController *oneVC = [[CYXOneViewController alloc]init];    // 1.2 把oneVC添加為UINavigationController的根控制器    UINavigationController *nav1 = [[UINavigationController alloc]initWithRootViewController:oneVC];    // 設定tabBar的標題    nav1.title = @"首頁";    [nav1.navigationBar setBackgroundImage:[UIImage imageNamed:@"commentary_num_bg"] forBarMetrics:UIBarMetricsDefault];    // 設定tabBar的表徵圖    nav1.tabBarItem.image = [UIImage imageNamed:@"tab_home_icon"];    // 設定navigationBar的標題    oneVC.navigationItem.title = @"首頁";    // 設定背景色(這些操作可以交給每個單獨子控制器去做)    oneVC.view.backgroundColor = [UIColor whiteColor];    // 1.3 把UINavigationController交給UITabBarController管理    [self addChildViewController:nav1];    // 2.添加第2個控制器    CYXTwoViewController *twoVC = [[CYXTwoViewController alloc]init];    UINavigationController *nav2 = [[UINavigationController alloc]initWithRootViewController:twoVC];    nav2.title = @"技術";    nav2.tabBarItem.image = [UIImage imageNamed:@"js"];    twoVC.navigationItem.title = @"技術";    twoVC.view.backgroundColor = [UIColor blueColor];    [self addChildViewController:nav2];    // 3.添加第3個控制器    CYXThreeViewController *threeVC = [[CYXThreeViewController alloc]init];    UINavigationController *nav3 = [[UINavigationController alloc]initWithRootViewController:threeVC];    nav3.title = @"博文";    nav3.tabBarItem.image = [UIImage imageNamed:@"qw"];    threeVC.navigationItem.title = @"博文";    threeVC.view.backgroundColor = [UIColor yellowColor];    [self addChildViewController:nav3];    // 4.添加第4個控制器    CYXFourViewController *fourVC = [[CYXFourViewController alloc]init];    UINavigationController *nav4 = [[UINavigationController alloc]initWithRootViewController:fourVC];    nav4.title = @"我的江湖";    nav4.tabBarItem.image = [UIImage imageNamed:@"user"];    fourVC.navigationItem.title = @"我的江湖";    fourVC.view.backgroundColor = [UIColor grayColor];    [self addChildViewController:nav4];}
  • 進行到這裡,我們已經把架構搭起來了,是不是很簡單?效果

Snip20150904_8.png
  • 但你可能會忍不住吐槽了,這些全是冗餘的垃圾代碼,沒有可讀性,下面就來抽取一下代碼吧

  • 第四步,抽取重複代碼

    • 由於上文的所有代碼都寫在viewDidLoad裡面且重複代碼過多,造成代碼冗餘,可擴充性不高的問題,下面讓我們來對代碼進行初步最佳化。
    • 這裡提取兩個方法,一個是添加所有子控制器的方法,另一個是添加每一個子控制器的方法
- (void)viewDidLoad {    [super viewDidLoad];    [self setUpAllChildViewController];}/** *  添加所有子控制器方法 */- (void)setUpAllChildViewController{    // 1.添加第一個控制器    CYXOneViewController *oneVC = [[CYXOneViewController alloc]init];    [self setUpOneChildViewController:oneVC image:[UIImage imageNamed:@"tab_home_icon"] title:@"首頁"];    // 2.添加第2個控制器    CYXTwoViewController *twoVC = [[CYXTwoViewController alloc]init];    [self setUpOneChildViewController:twoVC image:[UIImage imageNamed:@"js"] title:@"技術"];    // 3.添加第3個控制器    CYXThreeViewController *threeVC = [[CYXThreeViewController alloc]init];    [self setUpOneChildViewController:threeVC image:[UIImage imageNamed:@"qw"] title:@"博文"];    // 4.添加第4個控制器    CYXFourViewController *fourVC = [[CYXFourViewController alloc]init];    [self setUpOneChildViewController:fourVC image:[UIImage imageNamed:@"user"] title:@"我的江湖"];}/** *  添加一個子控制器的方法 */- (void)setUpOneChildViewController:(UIViewController *)viewController image:(UIImage *)image title:(NSString *)title{    UINavigationController *navC = [[UINavigationController alloc]initWithRootViewController:viewController];    navC.title = title;    navC.tabBarItem.image = image;    [navC.navigationBar setBackgroundImage:[UIImage imageNamed:@"commentary_num_bg"] forBarMetrics:UIBarMetricsDefault];    viewController.navigationItem.title = title;    [self addChildViewController:navC];}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.