最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS應(yīng)用開發(fā)中StoryBoard搭建UI界面的基本使用講解

 更新時(shí)間:2016年02月24日 09:30:50   作者:呂文翰  
這篇文章主要介紹了iOS應(yīng)用開發(fā)中StoryBoard搭建UI界面的基本使用,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下

StoryBoard 的本質(zhì)
StoryBoard 是蘋果在 iOS 5 中引入的新技術(shù)方案,目的是給紛繁復(fù)雜的 nib、xib 們一個(gè)溫暖的家,讓他們之間的關(guān)系更直觀地展示出來,并提供了一種新的頁面間跳轉(zhuǎn)方式 segue。

StoryBoard 的本質(zhì)是一個(gè) XML 文件,描述了若干窗體、組件、Auto Layout 約束等關(guān)鍵信息。示例文件:https://github.com/johnlui/AutoLayout/blob/master/AutoLayout/Base.lproj/Main.storyboard

但是,我們應(yīng)該認(rèn)識到一個(gè)更重要的本質(zhì):使用 StoryBoard 的 iOS 項(xiàng)目均以初始化 StoryBoard 文件作為整個(gè)程序的初始化入口,UIViewController 類是由于被 StoryBoard 綁定而初始化,從而開始運(yùn)行的。從下面兩個(gè)地方可以找到蛛絲馬跡:

201622492244990.jpg (1632×701)

201622492326203.jpg (994×414)

奇怪的 bug
初學(xué) iOS 開發(fā)的時(shí)候,如果使用了 StoryBoard,大家可能遇到過這個(gè)奇怪的 bug,頁面全黑:

201622492439713.jpg (375×689)

如果大家跟我一樣純靠找資料自學(xué)而沒有人教的話,一定出現(xiàn)過死活找不到原因而新建一個(gè)項(xiàng)目的尷尬情況吧 o(╯□╰)o,其實(shí)秘密在這里:

201622492458193.jpg (1659×766)

這表示這個(gè)窗體是此 StoryBoard 的初始窗體的意思,這樣 APP 在啟動(dòng)以后,會先啟動(dòng)主 StoryBoard,主 StoryBoard 會啟動(dòng)它的初始窗體,初始窗體啟動(dòng)跟他綁定的類,這樣 APP 就啟動(dòng)完成了。

多 StoryBoard 最佳實(shí)踐
托福喵 【已下架】1.0 版是我第一個(gè)上架的項(xiàng)目,只用了初始化項(xiàng)目時(shí)建立的那唯一的 Main.storyboard,里面有二十幾個(gè)窗體,在 Xcode 里每次點(diǎn)擊打開都要等五秒才能完全渲染完畢,而且 Segue 線交錯(cuò)縱橫,非常凌亂。這顯然不是個(gè)好的組織方式。

我現(xiàn)在正在重寫的托福喵第二版已經(jīng)采用了多 StoryBoard 的解決方案,把一些獨(dú)立的窗體組合放到一起使用一個(gè) StoryBoard 進(jìn)行組織,比如登陸注冊的幾個(gè)窗體,考試界面的幾個(gè)窗體,關(guān)于我們的幾個(gè)窗體等。下面我們將一起學(xué)習(xí)如何使用多 StoryBoard。

新建第二個(gè) StoryBoard

如下圖:

201622492611740.jpg (730×430)

給 Second.storyboard 拖入一個(gè) View Controller:

201622492629985.jpg (1920×988)

如何調(diào)用 Second.storyboard 中的窗體?

首先,編譯項(xiàng)目,我們得到如下警告:

201622492708138.jpg (469×155)

這個(gè)警告的意思是,這個(gè)窗體沒有入口,無法被觸達(dá)。如何讓他能夠被觸達(dá)?兩種方式:

設(shè)置為該 StoryBoard 的初始窗體:

201622492726688.jpg (1136×639)

給該窗體設(shè)置一個(gè) StoryBoard ID:

201622492744655.jpg (1122×730)

能夠被觸達(dá)之后,讓我們用代碼調(diào)用他們:

① 作為初始窗體

復(fù)制代碼 代碼如下:

let vc = UIStoryboard(name: "Second", bundle: nil).instantiateInitialViewController() as! UIViewController
self.navigationController?.pushViewController(vc, animated: true)

② 設(shè)置了 StoryBoard ID
復(fù)制代碼 代碼如下:

let vc = UIStoryboard(name: "Second", bundle: nil).instantiateViewControllerWithIdentifier("First") as! UIViewController
self.navigationController?.pushViewController(vc, animated: true)

當(dāng)然,也可以用 self.presentViewController 調(diào)用他們。

查看效果

201622492809891.gif (420×723)

多個(gè)storyboard間跳轉(zhuǎn)總結(jié)
Stroyboard 可以被看作一個(gè)管理View畫面的集合。也就是說一個(gè)iOS專案裡面并沒有限制只能有一個(gè)Storyboard。
所以在你的APP專案中,你可以把功能相近的View放到同一個(gè)APP之中,形成一個(gè)群組,方便功能上的管理。

1.在專案中準(zhǔn)備2個(gè)Storyboard

在一個(gè)IOS的專案裡面建立兩個(gè)StoryBoard。

2. 在第一個(gè)StoryBoard中,我們拉出了一個(gè)Navigation 的Template,在[Main View Controller]這個(gè)中View裡面拉進(jìn)一個(gè)Button。

3. 接著在第二個(gè)StoryBoard裡面我們也拉出一個(gè)Navigation template。
在畫面中拉一個(gè)Label標(biāo)籤,并且在裡面我們把文字改成Storyboard2。這只是用來識別目前我們被帶到哪一個(gè)畫面之中。

4. 在第一個(gè)StoryBoard畫面中的Botton裡面,我們要在按鈕的[TouchUpinside]事件中撰寫底下的程式碼。

復(fù)制代碼 代碼如下:

UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"Storyboard2" bundle:nil];
UIViewController* test2obj = [secondStoryBoard instantiateViewControllerWithIdentifier:@"test2"];  //test2為viewcontroller的StoryboardId
[self.navigationController pushViewController:test2obj animated:YES];

第一步就是要先指定UIStoryboard物件,這邊我們要指向?qū)0钢械牡诙€(gè)Storyboard。
接下來我們要先New出一個(gè)Controller物件,這是你要Push到的下一個(gè)View頁面,他所對應(yīng)的Controller。
最后使用self.navigationController推網(wǎng)頁到下一頁。

相關(guān)文章

  • iOS消息發(fā)送和轉(zhuǎn)發(fā)示例詳解

    iOS消息發(fā)送和轉(zhuǎn)發(fā)示例詳解

    這篇文章主要給大家介紹了關(guān)于iOS消息發(fā)送和轉(zhuǎn)發(fā)的相關(guān)資料,用Objective-C的術(shù)語來講,這叫做“給某個(gè)對象發(fā)送某條消息”。文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • iOS 正則表達(dá)式判斷手機(jī)號碼、固話

    iOS 正則表達(dá)式判斷手機(jī)號碼、固話

    本文主要介紹了iOS 正則表達(dá)式判斷手機(jī)號碼、固話,以及匹配是否是移動(dòng)/聯(lián)通/電信手機(jī)號的方法。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-03-03
  • 10個(gè)非常實(shí)用的iOS小技巧

    10個(gè)非常實(shí)用的iOS小技巧

    這篇文章主要為大家詳細(xì)介紹了10個(gè)非常實(shí)用的iOS小技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 詳解iOS 輕松獲取當(dāng)前控制器的正確方式

    詳解iOS 輕松獲取當(dāng)前控制器的正確方式

    這篇文章主要介紹了詳解iOS 輕松獲取當(dāng)前控制器的正確方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • iOS觸摸事件UITouch應(yīng)用詳解

    iOS觸摸事件UITouch應(yīng)用詳解

    這篇文章主要為大家詳細(xì)介紹了iOS觸摸事件UITouch的應(yīng)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 詳解iOS應(yīng)用使用Storyboard布局時(shí)的IBOutlet與IBAction

    詳解iOS應(yīng)用使用Storyboard布局時(shí)的IBOutlet與IBAction

    這篇文章主要介紹了iOS應(yīng)用使用Storyboard布局時(shí)的IBOutlet與IBAction,文中還附帶講解了為什么IBOutlet屬性是weak的,需要的朋友可以參考下
    2016-04-04
  • IOS 通訊錄的訪問和修改的實(shí)現(xiàn)

    IOS 通訊錄的訪問和修改的實(shí)現(xiàn)

    這篇文章主要介紹了IOS 通訊錄的訪問和修改的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • IOS 應(yīng)用程序管理的實(shí)現(xiàn)

    IOS 應(yīng)用程序管理的實(shí)現(xiàn)

    這篇文章主要介紹了IOS 應(yīng)用程序管理的實(shí)現(xiàn)的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • iOS中關(guān)于Taptic-Engine震動(dòng)反饋的深入解析

    iOS中關(guān)于Taptic-Engine震動(dòng)反饋的深入解析

    這篇文章主要給大家介紹了關(guān)于iOS中關(guān)于Taptic-Engine震動(dòng)反饋的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • iOS開發(fā)使用GDataXML框架解析網(wǎng)絡(luò)數(shù)據(jù)

    iOS開發(fā)使用GDataXML框架解析網(wǎng)絡(luò)數(shù)據(jù)

    GDataXML是Google開發(fā)的一個(gè)XML解析庫,輕便,特點(diǎn)使用非常簡單,支持XPath。今天把前兩天弄的IOS XML解析記錄下來,也供大家參考。
    2016-02-02

最新評論

高尔夫| 武义县| 彭泽县| 通州市| 湖南省| 蓝田县| 平邑县| 玛多县| 历史| 中牟县| 保康县| 南川市| 武隆县| 库车县| 大渡口区| 九龙坡区| 招远市| 綦江县| 信宜市| 如东县| 纳雍县| 息烽县| 福安市| 鄂托克前旗| 安陆市| 东平县| 同仁县| 安康市| 雷州市| 德惠市| 南溪县| 博客| 安多县| 芜湖市| 大邑县| 广丰县| 新和县| 成武县| 和平区| 永仁县| 乌审旗|