亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS之Storyboard導航大揭秘(1)

發布時間:2020-06-30 18:08:37 來源:網絡 閱讀:4033 作者:androidguy 欄目:移動開發

本文使用的軟件版本:

IOS:6.1

XCode:4.6

     Storyboard(故事板)是XCode4.2才開始支持的,為了使設計View更容易。盡管用以前的nib(xib)拖拖拽拽也沒問題,不過卻需要 在各種文件之間來回切換,對于初學者很容易崩潰。Storyboard在這方面改進了不少,基本上只要在storyboard界面就可以完成一切,尤其是 View導航,可以不編寫一行代碼就可以搞定。盡管storyboard在實現View導航方面要比xib更容易使用,不過對于初學者來說仍然有一些難 度,因此本文及后面幾篇文章會詳細介紹如何使用storyboard實現各種類型的導航。

     本文會介紹一種最簡單的導航方式,也就是單擊當前View的一個Button,會跳到另外一個View上,并且向這個View傳遞數據。

     首先在XCode中建立一個“SingleView Application”類型工程,主要要選擇“Use Storyboard”和“Use Automatic Reference Counting”,這樣就可以使用ARC了,也會自動建立一個storyboard。工程名是StoryboardDemo1。

     接下來再建立一個Objective-CClass,類名為MyViewController,注意Superclass為 UIViewController,并且下面兩個復選框都不要選中,因為這里不需要XIB文件。如果按著這些步驟做,最后StoryboardDemo1 工程的目錄結構如圖1所示。

iOS之Storyboard導航大揭秘(1)

圖1

         接下來要做的是打開MainStoryboard.storyboard文件,會看到界面上有一個默認的View。這是根視圖,也就是說程序運行會首先要 顯示該視圖。由于本文的目的是實現導航,而IOS規定所有參與導航的視圖必須由UINavigationController控制。所以還需要在 storyboard上加一個UINavigationController,并且程序的入口由View變成了 UINavigationController。完成這項工作的方法很多,先來看一個超級無敵簡單的方法,就是選中storyboard默認的View, 然后點擊“Editor”>“Embed In”>“Navigation Controller”菜單項,XCode就會自動在storyboard上生成一個UINavigationController,并更改啟動入口。最 終storyboard的效果如圖2所示。

iOS之Storyboard導航大揭秘(1)

圖2

         除了這種簡單的方法,還可以直接從控件面板上拖一個UINavigationController控件,不過默認這個控件還帶了一個 UITableViewController。這個東西并不需要,所以可以刪除UITableViewController。然后選中 storyboard中的UINavigationController,并按住ctrl鍵,然后拖動鼠標到默認視圖上,這時會彈出一個菜單,選擇最下面 的“root view controller”,最后的效果與圖2完全一樣。當然,為了顯示自己有極客范,也可以在storyboard上放一個 UINavigationController控件后,進入storyboard的源代碼文件(xml格式的文件),找到默認視圖的聲明代碼,其實也很好 找,只要設置了默認視圖導航條的標題,就會在這段代碼的頂端出現一行注釋,如圖3所示。我們要找的就是<viewController>標簽 的id屬性值。該屬性值唯一標識了默認視圖,在當前storyboard配置文件中不會重復。

iOS之Storyboard導航大揭秘(1)

圖3

接下來尋找導航條(UINavigationControlle)的聲明代碼,也可以根據自動生成的注釋,如圖4所示。

iOS之Storyboard導航大揭秘(1)

圖4

     我們只關心<navigationController>標簽中的<connections>標簽的 destination屬性值,<connections>標簽標示當前的導航控制器直接與哪個視圖連接,也就是導航控制器中的第一個視圖。 只要將該屬性值改成默認視圖的id屬性值即可。當然,該屬性值默認是指向UITableViewController的id屬性值的。

      接下來雙擊默認視圖上面的導航條,輸入標題文本“首頁”,并在默認視圖上放置一個Button,Title為“顯示新視圖”。

     下面在storyboard上再放一個ViewController,并且在View上放置一個UITextField控件(可以放任何控件,這里只是為了演示方便),

     盡管多個View會放到一個storyboard中,但不同的View會使用不同的源代碼文件,在前面已經建了一個MyViewController類, 所以這個新的View會使用MyViewController類。然后需要將這個View與MyViewController類關聯。選擇 ViewController,在右側面板中選擇第3個按鈕,設置MyViewController,如圖5所示。

iOS之Storyboard導航大揭秘(1)

圖5

     接下來為UITextField在MyViewController.h文件中設置Outlet(名為textField,用于引用該控件)。

     現在選擇默認視圖上的button,然后按住ctrl鍵,拖動鼠標到新放置的視圖(上面有UITextField控件的視圖),會彈出一個菜單,選中“push”,其他的選項不能用于這種導航方式。

     到現在為止,storyboard上共有一個導航控制器和兩個視圖控制器,連接關系如圖6所示。

iOS之Storyboard導航大揭秘(1)

圖6

      現在就可以運行程序了,然后點擊“顯示新視圖”按鈕,就可以切換到新視圖,并且在新視圖左上角會顯示一個導航按鈕,點擊會返回“首頁”視圖。

      還有一個問題,如何在兩個視圖直接傳遞數據呢?當然可以用全局變量或靜態變量,不過這些方式有些不妥(全局和靜態變量用多了不是什么好事)。

      這里介紹一種通過prepareForSegue:方法傳遞數據的方法,由于默認視圖對應的源代碼文件是ViewController.m,所以在該文件中實現prepareForSegue:方法,代碼如下:

  1. -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender   
  2. {   
  3.     //  判斷啟動的目標View是否為MyViewController   
  4.    if([[segue destinationViewController] class] == [MyViewController class])   
  5.     {   
  6.         MyViewController *myView = [segue destinationViewController];   
  7.         [myView setText:@"李寧"];   
  8.     }   
  9. }   

       當導航到MyViewController之前(已經創建了MyViewController對象,但還沒調用 MyViewController.viewDidLoad方法)系統會調用prepareForSegue:方法。并且可以通過 [seguedestinationViewController]方法獲取目標視圖的對象,并調用視圖對象中的方法設置任何的參數值。這里在 MyViewController.m中實現了setText方法,用于設置mText變量,然后在 MyViewController.viewDidLoad方法中通過mText變量值設置UITextField控件的顯示文本。

      除了可以通過[seguedestinationViewController]方法判斷目標視圖外,還可以使用下面的代碼。

  1. -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender   
  2. {   
  3.     if([segue.identifier isEqualToString:@"myview"])   
  4.     {   
  5.         MyViewController *myView = [segue destinationViewController];   
  6.         [myView setText:@"李寧"];   
  7.     }   
  8. }   

     其中segue.identifier表示導航連接的標識,也就是單擊圖6中新視圖和默認視圖直接連線中間的圓圈后,在右側的Identifier文本框的值,如圖7所示。

iOS之Storyboard導航大揭秘(1)

圖7

現在運行程序,當導航到新視圖后UITextField控件中的文本就會變成“李寧”了。

源代碼下載

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴楚县| 休宁县| 淳化县| 黔西县| 海宁市| 昌乐县| 五河县| 阳城县| 辽宁省| 连城县| 张家川| 视频| 黑水县| 韶关市| 陇南市| 莒南县| 靖宇县| 聊城市| 天峨县| 富川| 包头市| 襄樊市| 重庆市| 抚松县| 洪洞县| 翼城县| 通榆县| 建瓯市| 呼玛县| 固安县| 张掖市| 伽师县| 黑水县| 伊川县| 绩溪县| 乌兰察布市| 穆棱市| 曲沃县| 德江县| 锡林郭勒盟| 凤山市|