[iOS] 一個左側導 app 的簡單框架

hxxk0641 9年前發布 | 10K 次閱讀 iOS開發 移動開發

一個左側導app的簡單框架(以LGSideMenuController為基礎)

整個app里只用到了一個UINavigationController,因此另行封裝一個單例類VCManager,在類中獲取UINavigationController實例,利用該實例進行頁面的push,pop等操作。優點是利用VCManager在所有的地方都可以實現push,pop操作。如下圖一個cell里兩個button:登錄和注冊,它們對應的push操作都是在cell內部通過調用 [[VCManager mainManager] pushVC:vc animated:YES]; 實現。 在任何需要的地方使用VCManager封裝的方法實現跳轉,避免了過多的代理和block,代碼更加美觀

VCManager:

// 單例,僅管理側導及首頁的頁面。

  • (instancetype)mainManager;</code></pre>
    • navigation相關
    // 業務層最好不要使用本屬性
  • (UINavigationController *)mainNavi;

// 是否為頂部節點

  • (BOOL)isTopVC:(UIViewController *)vc;

// 獲取頂部節點

  • (UIViewController *)getTopVC;

// 獲取底部節點

  • (UIViewController *)getRootVC;

// 壓入節點

  • (void)pushVC:(UIViewController *)vc animated:(BOOL)animated;

// 彈出節點

  • (void)popVCAnimated:(BOOL)animated;

// 彈出節點

  • (void)popToVC:(UIViewController *)vc animated:(BOOL)animated;

// 彈出頂節點然后壓入節點 // pop 無動畫,animated 是指 push 動作是否有動畫

  • (void)popThenPushVC:(UIViewController *)vc animated:(BOOL)animated;

// 彈出至某節點然后壓入節點 // pop 無動畫,animated 是指 push 動作是否有動畫

  • (void)popToVC:(UIViewController )popVC thenPushVC:(UIViewController )vc animated:(BOOL)animated;</code></pre>
    • 側導相關
    // 更改首頁的頁面
    // 默認ViewController
  • (void)setAppMainVC:(UIViewController *)appMainVC; // 連續設置首頁多個頁面
  • (void)setAppMainVCs:(NSArray *)appMainVCs;

// 是否禁掉右滑顯示菜單

  • (BOOL)menuViewSwipeGestureEnabled;
  • (void)setMenuViewSwipeGestureEnabled:(BOOL)enable;

// 顯示側導目錄

  • (void)showMenuAnimated:(BOOL)animated completionHandler:(void (^)())completionHandler; // 關閉側導目錄
  • (void)hideMenuAnimated:(BOOL)animated completionHandler:(void (^)())completionHandler; // 改變側導目錄顯示/關閉狀態
  • (void)showOrHideMenuAnimated:(BOOL)animated completionHandler:(void (^)())completionHandler;</code></pre>

    登錄和注冊實例代碼:

    - (void)loginAction:(id)sender
    {
      [self pushVCWithTitle:@"登錄"];
    }

  • (void)registerAction:(id)sender { [self pushVCWithTitle:@"注冊"]; }

  • (void)pushVCWithTitle:(NSString )title { UIViewController vc = [[UIViewController alloc] init]; vc.title = title; vc.view.backgroundColor = [UIColor whiteColor]; [[VCManager mainManager] pushVC:vc animated:YES]; [[VCManager mainManager] hideMenuAnimated:YES completionHandler:nil]; }</code></pre>

     

    來自:https://github.com/thinkq/ZQSideMenuProject

     

    Save

 本文由用戶 hxxk0641 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!