1. 程式人生 > >iOS開發進階-使用多個StoryBoard劃分專案

iOS開發進階-使用多個StoryBoard劃分專案

前言:在實際來發中,作者一般都是使用純程式碼的方式進行開發,國內很多開發者都喜歡使用純程式碼進行開發,一方面是程式碼可維護性比較高,另一方面也是因為StoryBoard團隊協作的詬病。不過如果把一個專案拆分為多個StroyBoard,不同的人負責不同的模組,那就能很好的解決一些問題。本文主要講解如何把一個專案拆分在多個StoryBoard上。

正確的命名

首先我們在原有的StroyBoard的基礎上,再新建兩個StroyBoard檔案,其中一個命名為first,一個命名為second。
這裡寫圖片描述

再開啟main.StroyBoard檔案,拖入兩個View,使用Segue進行連線,注意著兩個Segue的命名,一定要和StroyBoard的名字一樣(具體原因待會我會講到),如下圖所示。
這裡寫圖片描述

重寫UIStoryboardSegue類

新建Objective檔案,繼承UIStoryboardSegue

#import <UIKit/UIKit.h>

@interface JQStoryboardSegue : UIStoryboardSegue

@end

重寫下面兩個方法


- (instancetype)initWithIdentifier:(nullable NSString *)identifier source:(UIViewController *)source destination:(UIViewController *)destination {

    UIStoryboard *externStroyBoard = [UIStoryboard  storyboardWithName:identifier bundle:[NSBundle
bundleForClass:self.class]]; id initViewController = [externStroyBoard instantiateInitialViewController]; return [super initWithIdentifier:identifier source:source destination:initViewController]; } - (void)perform { [self.sourceViewController presentViewController:self.destinationViewController
animated:YES completion:NULL]; }

從程式碼中我們可以來解釋之前所說的為什麼Segue的名字要和需要跳轉的StoryBoard名字一樣。[NSBundle bundleForClass:self.class] 這樣就可以把這個新建的類抽象出來,適用於同樣場景的跳轉。perform方法指明瞭跳轉的源控制器和目的控制器。自定義動畫等也需要在這裡實現,不過本文暫不介紹這方面的內容。

重寫這個類之後,我們記得開啟main.StoryBoard。把兩個Segue的類修改為剛才新建的類。

這裡寫圖片描述

相關推薦

iOS開發-使用StoryBoard劃分專案

前言:在實際來發中,作者一般都是使用純程式碼的方式進行開發,國內很多開發者都喜歡使用純程式碼進行開發,一方面是程式碼可維護性比較高,另一方面也是因為StoryBoard團隊協作的詬病。不過如果把一個專案拆分為多個StroyBoard,不同的人負責不同的模組

ios開發執行緒01 執行緒 GCD

一 多執行緒基礎 什麼是程序? 程序是指在系統中正在執行的一個應用程式。 每個程序之間是獨立的,每個程序均執行在其專用且受保護的記憶體空間內。 什麼是執行緒? 1個程序要想執行任務,必須得有執行緒(每1個程序至少要有1條執行緒)。 1個執行緒中任務的執行

iOS開發》書籍目錄

archive 憑證 修改 工具 core serial 第二部分 破解 uilabel 第一部分:iOS開發工具 第二部分:iOS開發實踐 第10章 理解內存管理 10.1 引用計數 10.1.1 什麽是引用計數,原理是什麽 10.1.2 我們為什麽需要引用計數 10

單一職責原則——地方的不同見解和解讀

高內聚 mooc its 下一個 次數 圖片 光貓 基於 對象 首先是定義 單一職責原則:一個類應該只有一個發生變化的原因英文名叫Single Responsibility Principle,以下簡稱為SRP 下面我們從三本著作中去解讀這個單一職責這三本著作分別是《

iOS開發》閱讀總結

1.引用計數的作用 物件A向物件B傳遞引數物件M ,物件M可能成為物件B的成員變數,也可能只是臨時使用,如果不用引用計數控制,則無法在正確的時間釋放物件M。 案例一:物件A將物件M傳遞給物件B後

Reveal的使用--整理自唐巧的《iOS開發

1.下載一個正版的reveal來安裝。 2.開啟終端,輸入vim ~/.lldbinit建立一個名為.lldbinit的檔案,然後將如下內容輸入檔案中 command alias reveal_load_sim expr (void*)dlopen("/Applicat

iOS開發-:被誤解的MVC和被神化的MVVM(作者:唐巧)

作者 唐巧 釋出於 2015年11月1日 | 被誤解的 MVC MVC 的歷史 MVC,全稱是 Model View Controller,是模型 (model)-檢視 (view)-控制器 (controller) 的縮寫。它表示的是一種常見的客戶端軟

iOS開發-:最新版SDWebImage的使用

文章轉自: http://www.cocoachina.com/ios/20141212/10622.html 我之前寫過一篇部落格,介紹快取處理的三種方式,其中最難,最麻煩,最佔記憶體資源的還是圖片快取,最近做的專案有大量的圖片處理,還是採用了SDWebIma

iOS開發-:MOV格式視訊轉MP4格式

AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:sourceUrl options:nil]; NSArray *compatiblePresets = [AVAssetExportSession exportP

iOS開發-:音訊播放、錄音、視訊播放、拍照、視訊錄製

轉自: http://www.cnblogs.com/kenshincui/p/4186022.html#audioRecord 文章太長了, 如果我這裡寫的質量不好, 請參考原文; 概覽 隨著移動網際網路的發展,如今的手機早已不是打電話、發簡訊那麼

iOS開發-:開啟Remote notifications

需要在Xcode 中修改應用的 Capabilities 開啟Remote notifications,請參考下圖: 修改通知處理函式 當註冊了Backgroud Modes -> Remote notifications 後,notification 處理

iOS開發-:瀑布流基本實現

文章轉自: http://www.jianshu.com/p/78830bdb04a9 一、瀑布流設計方案 不可取.png 過於複雜.png 最優方案.png 二、瀑布流設計思路分析 1、自定義流水佈局中,指定滾動方向、預設列數、行間距、列間距、以及

iOS開發-UITapGestureRecognizer使用技巧

手勢互動是iOS開發中用的比較多的一個類,用途無處不在,這裡面也衍生了很多的需求和用法,UIGestureRecognizer很強大,它的子類包括很多,不過想要更完美的使用它,就需要了解它的底層原理和和一些特殊情況下的處理辦法,本文主要介紹UITapGestur

iOS開發-:JS與OC的互動

在移動應用的專案中, web 相比原生應用有如下優點: 版本可以隨時更新, 效率高;可動態配置要展示的資料, 及資料來源.原生應用中, 如果一個頁面的展示, 需要多次呼叫不同的網路請求, 並且, 上一次請求的結果是下一次請求的引數, 這樣按順序呼叫網路並且等待網路返回的資

iOS開發-:JPush設定標籤與別名的API

標籤與別名 API (iOS) 功能說明 溫馨提示,設定標籤別名請注意處理call back結果。 只有call back 返回值為 0 才設定成功,才可以向目標推送。否則伺服器 API 會返回1011錯誤。所有回撥函式都在主執行緒執行。 提供幾個相關 AP

【原】iOS開發(唐巧)讀書筆記(二)

第三部分:iOS開發底層原理 1、Objective-C物件模型 1.1 isa指標 NSObject.h部分程式碼: NS_ROOT_CLASS @interface NSObject <NSObject> { Class isa; } objc.h部分程式碼: typedef stru

安卓開發之RxJava在實際專案中使用--第二篇

關於RxJava原理分析,請參考仍物線寫的文章—-給 Android 開發者的 RxJava 詳解。本文不對原理作過多的分析,從最快上手的角度,讓開發者使用起來,當我們有實踐經驗後回過頭來看原理分析會更清晰。 本系列共有三篇文章,分別關於Rxjava的基礎使用

一、web專案開發之分模組管理專案之通用模組

  以前的web專案都是統一一個工程,其他人員在這個專案拉取分支進行開發,但是若需要多個人協作同時進行開發時,會造成各種各樣的問題。為了解決這些問題,按照業務邏輯進行區分,將一個專案按照多個模組進行構建。 (一)所有專案的父模組“parent”   父模組的

[Xcode10 實際操作]九、實用-(23)Storyboard故事板中的頁面跳轉

本文將演示多個Storyboard故事板中的頁面跳轉。 使用快捷鍵【Command】+【N】建立一個新的故事板檔案。 (在專案資料夾【DemoApp】上點選滑鼠右鍵【New File】建立) ->【Storyboard】->【Next】->【Save As】:Storyboard.st

python3-開發 heapq模塊(如何查找最大或最小的N元素)

div lam 優勢 排序 portfolio res 函數 多個 items 一、怎樣從一個集合中獲得最大或者最小的 N 個元素列表?   heapq 模塊有兩個函數:nlargest() 和 nsmallest() 可以完美解決這個問題。 import heap