1. 程式人生 > >Storyboard的基礎知識-介面管理、多View切換、View間資料傳遞

Storyboard的基礎知識-介面管理、多View切換、View間資料傳遞

Storyboard是現在Apple推薦的介面管理方式,我初學,使用的Xcode 5,預設已經不再使用XIB管理介面了,不過Storyboard跟XIB其實也是一樣的,都是一個XML檔案,只不過Storyboard的XML結構更加複雜。

此專案的Storyboard中View的概覽

此專案的Storyboard中View的概覽

一、Storyboard與XIB的區別

在之前使用XIB進行iOS應用的介面管理時,使用IB只能對一個介面一個介面進行單獨管理,介面之前的邏輯關係需要開發程式設計師來牢記,如果介面過多,那會是一個非常複雜的關係。

引入Storyboard後,我們可以看到上面的圖可以看出,我們可以在一個視窗中管理多個View,多個View之間的關係非常清晰,所以這極大方便了開發者理清各個View之間的邏輯關係。

二、認識Storyboard中的元素

在Storyboard中有三種元素——起始標籤、各個介面的View和聯絡各個View關係的Segue。

1、起始標籤

Storyboard起始標籤

Storyboard起始標籤

一個Storyboard有且只有一個起始標籤,起始標籤指向的是這個Storyboard被啟動時首先顯示的介面,也就是程式的UI入口。

2、View

Storyboard中的View

Storyboard中的View

一個View對應一個介面,類似於一個XIB。

3、Segue

Segue表示了View之間的關係

Storyboard中Modal方式的Segue

Storyboard中Modal方式的Segue

Storyboard中Navigation方式的Segue

Storyboard中Navigation方式的Segue

Storyboard中Push方式的Segue

Storyboard中Push方式的Segue

三、建立並執行一個Storyboard

建立好一個iOS專案後,如果是Xcode 5,新建一個非Empty專案,都將會自動建立一個Main.storyboard,並將這個Storyboard設定為預設的UI介面。

手動建立一個Storyboard的方法是選擇新建一個檔案(Command+N),然後在左邊選擇User Interface,再在右邊的模版中選擇Storyboard。

新建一個Storyboard

新建一個Storyboard

然後選擇裝置型別(Device Family),可以選擇iPhone、iPad。iPhone表示這個介面是為iPhone裝置設計的,iPad表示這個介面是為iPad裝置設計的。

然後輸入檔名並儲存,我這裡儲存為User。

接下來就要將這個Storyboard設定為預設的UI管理器。有兩種方法,一種是在專案檔案管理器中選擇專案名稱,然後選擇General,然後設定Main Interface。

設定iOS應用主介面

設定iOS應用主介面

這裡選擇剛才建立的User.storyboard。

另一種方法是在程式碼中來完成的,開啟專案的AppDelegate.m檔案,修改- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// 建立一個UIStoryboard物件
UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"User" bundle:nil];
// 將storyboard設定為要顯示的UI
self.window.rootViewController = [storyboard instantiateInitialViewController];
return YES;
}

為了能更好的顯示,我專案中設定的Main Interface為Main.storyboard,然後設定如上程式碼,可以看到哪個最後執行,或者說哪個優先順序更高。我還為這個User.storyboard添加了一個UIViewController,並在上面添加了一個UILabel。程式執行結果如下:

Storyboard啟動

Storyboard啟動

四、Storyboard中各個介面間的切換Segue

這裡我用到了我之前做的Main.storyboard了,所以參看第一關係張圖

1、類似於XIB的介面間切換

就是給定一個按鈕,然後為這個按鈕添加了一個Touchup in side事件,當用戶按下按鈕時觸發事件。新建一個ViewAController,並新增一個按鈕,命名為Jump ViewC,新建一個ViewCController,並在ViewCController中新增一個Label,更新文字為View C。介面如下:

Storyboard中modal方式傳遞的Segue

Storyboard中modal方式傳遞的Segue

注意了,這裡沒有用到Segue,只是為Jump ViewC按鈕新增一個onClick的事件處理方法如下:

- (IBAction)onClick:(id)sender {
// 通過Storyboard中的View的Identifier標籤來建立對應的ViewController

相關推薦

Storyboard基礎知識介面管理View切換View資料傳遞

Storyboard是現在Apple推薦的介面管理方式,我初學,使用的Xcode 5,預設已經不再使用XIB管理介面了,不過Storyboard跟XIB其實也是一樣的,都是一個XML檔案,只不過Storyboard的XML結構更加複雜。 此專案的St

【JAVA】基礎:面向物件:(抽象封裝繼承型)方法重寫訪問修飾符關鍵字(this,super,static,final)抽象介面

面向物件概念: 面向過程:完成一件事情任何過程自己親力親為。 面向物件:找能完成這件事的物件。在java中就是找物件,調方法。 面向物件特徵:抽象,封裝,繼承,多型 類和物件的關係: 類:生活中事物的統稱,如動物,車,服裝,食品… 物件:就是類下面實實在在存在的個體,如動物類的物件就是:

C++基礎知識 基類指針虛函數態性純虛函數虛析構

這就是 nbsp rtu 可能 就會 delete 繼承 都是 del 一、基類指針、派生類指針 父類指針可以new一個子類對象 二、虛函數 有沒有一個解決方法,使我們只定義一個對象指針,就可以調用父類,以及各個子類的同名函數? 有解決方案,這個對象指針必須是一個父

JavaScript基礎知識(數據類型及轉換運算符)

console 開頭 作用 log n) 文本 有一個 嵌套 efi 9、數據類型 概念:表示當前存儲的數據的分類(表示數字 - 整數和小數) u 原始類型(原始值) -----【typeof運算符:判斷變量的原始類型】 *number(數字):表示數字

mysql基礎知識之-數據庫的創建查看等常用操作

nbsp 報錯 mysq del article 文檔 sele 結構 log 命令創建mysql數據庫: 先啟動mysql數據庫,連接數據庫:   mysql -uroot -p123456 (語法:mysql -u登錄名 -p密碼) 創建表:   cre

Java 知識 - 集合執行緒IOJVM

GitHub 專案地址 Collection Java Collection 新增、刪除等操作時可選操作,如 Arrays.asList,會產生固定大小的集合,會丟擲 UnsupportedOperationException Set HashSet、TreeSet、LinkedH

Linux基礎知識【網路管理,解壓縮】

Linux基礎知識 目錄 1、VI文字編輯器... 1 2、網路管理... 4 2.1、ifconfig命令... 4 2.2、網路配置... 4 2.3、修改主機名... 8 2.4、配置主機對映(域名和IP對映)... 8 2.5、其他常用網路管理命令... 9

java基礎 · 例項(介面抽象類型的結合)

package v1; interface Animal{ void shout(); //介面中只宣告方法 void breatch(); void name(); } abstract class abstractclaaa implements

計算機基礎與作業系統 計算機系統簡介 計算機基礎知識 計算機的發展史及道技術 計算機網路知識簡單介紹 Windows系統,Mac系統與Linux系統的的安裝與簡介 伺服器硬體基礎 Linux發展史 Linux伺服器遠端登入 Linux常用的150個命令彙總 在終端下寫Python程式碼

第一章:計算機系統簡介 第二章:計算機基礎知識 第三章:計算機的發展史及多道技術 第四章:計算機網路知識簡單介紹 第五章:Windows系統,Mac系統與Linux系統的的安裝與簡介 第六章:伺服器硬體基礎 第七章:Linux發展史 第八章:Linux伺服器遠端登入 第九

基於token的登入管理裝置登入單裝置登入)

不管是客戶端介面還是網頁H5介面,一般我們都需要登入驗證,即要求所有的介面訪問都必須在登入之後,以確認身份,防止非法呼叫。一般的流程都是登入的時候返回一個代表此登入的token,以後所有介面都帶上此token,在所有介面呼叫之前攔截驗證,一般都是通過AOP或者一個Filter、攔截器來實現。而退

Linux基礎知識之磁碟管理

1、描述GPT是什麼,應該怎麼使用。     早期磁碟第一個扇區裡面含有的重要資訊我們稱為 MBR (Master Boot Record) 格式,但是由於近年來磁碟的容量不斷擴大,造成讀寫上的一些困擾, 甚至有些大於 2TB 以上的磁碟分割槽已經讓某些作業系統無

Linux基礎知識(使用者管理

使用者管理 一、使用者理解 使用者就是系統使用者的身份,在系統中使用者儲存為若干字元+若干個系統配置檔案。我們可以使用whoami命令來檢視當前使用者身份,但我們在切換使用者時不可以一直用su命令頻繁切換,這樣會導致之後操作中會出現報錯,我們要學會用exit命令

Linux資料庫管理——day4——表查詢phpMyAdmin管理工具修改資料庫使用者密碼使用者授權

複製表     主要作用:  備份表 、 快速建表     語法: create table 表名 SQL查詢語句 # 備份一個表的所有資料 create table 表名 select * from 被備份的表; # 以一個表的表結構為模型建立一個新表,但不要資料 cr

C++基礎知識Day5

今天主要講的是類的擴充套件 1.類成員函式的儲存方式 首先我們介紹類成員函式的儲存方式,C++引入面向物件的概念之後,C語言中的一些比如static/const等原有語義,作一些升級,此時既要保持相容,還要保持衝突不變。一個物件所佔的空間大小隻取決於該物件中資料成員所佔的空間,而與成員函式無關,但是對於對

Linux基礎知識之包管理工具

1、每12小時備份並壓縮/etc/目錄至/backup目錄中,儲存檔名稱格式為,“etc-年-月-日-時-分.tar.gz” [[email protected] backup]# tar -czv -f /backup/etc-"$(date

基礎學python:併發伺服器面向連線程序執行緒單程序

面向連線的併發伺服器 只能同時為一個人服務 為了幫助小夥伴們更好的學習Python,小編整理了Python的相關學習視訊及學習路線圖; ,新增小編學習群943752371即可獲取 多程序併發伺服器 多程序伺服器代表:Apache伺服器 主程序中必需

css基礎知識+css選擇符(元素選擇符關係選擇符)

首先介紹在HTML檔案中匯入CSS檔案的幾種方式: 1、行內樣式:<p style="color:red">行內樣式使用css</p> 2、頁內樣式:在head標籤裡設定 <span style="font-size:18

Java基礎學習總結(104)——執行緒併發工具類相關的面試題

執行緒的概念 執行緒是程式執行的最小單位,也是作業系統排程和分派CPU的最小單元,是程序中的一個實體,是程序中的實際運作單位。可以在一個程序中啟動多個執行緒來完成不同的任務,這些執行緒共享該程序擁有的資源。 執行緒程序區別 程序是程式的實體,也是執行緒的容器,一個程序可以包含多個執行緒,程序是資源分配的基本單

C# 基礎(十四)C#單例模式:首先介紹 單執行緒執行緒加鎖 單例模式。然後介紹單例模式的執行緒同步:執行緒有序訪問共享記憶體。

一、簡介 本篇文章將介紹如何使用單例模式,也就是類的例項化,在整個專案的生命週期內,只例項化一次。在單例模式中,往往可以看到如SourceCode.cs:這樣的結構的。 SourceCode.cs: public class Singleton { private static

Java基礎學習之介面和抽象類的概念區別及適用的場景

1.介面   介面是抽象方法的集合,一個介面只有方法的形狀而沒有方法的具體實現,介面是Java面向物件提供的一種機制。   Java語言是一種單繼承的,在類的繼承中通過實現多個介面間接實現了多繼承功能。介面的宣告: [public] interface InterfaceName{