IOS編程教程(十二):創建標簽欄和網頁視圖


這是故事版系列的第三篇文章。上一次,我們討論了如何給用聯線(Segue)連接的視圖控制器之間的數據傳遞它應該很容易吧?現在,讓我們繼續進行我們的故事板項目,看你怎么可以在iPhone的應用程序創建其他兩個常見的UI元素。

在本教程中,您將了解到:

>如何創建一個標簽欄控制器(Tab Bar)

>如何創建一個“關於”頁面使用的UIWebView

如果你是新學故事板的,我建議你從我的第一個教程開始。因為討論的材料是基於我們之前做過的工作。

標簽欄控制器(Tab Bar Controller)和網頁視圖(UIWebView)

首先,像往常一樣,讓我們​​對標簽欄控制器和UIWebView進行一個簡短的介紹。你可能不熟悉“標簽欄”,但它經常出現在大多數的iPhone應用程序。只要看看在下面的示例應用程序就行。所有這些都在標簽欄控制器使用標簽以顯示不同的視圖。通常情況下,標簽欄包含至少兩個選項卡,你可以根據您的需要添加五個選項卡。

image

標簽欄的示例應用程序接口

另一方面,UIWebView是一個方便的加載網頁內容組件。在某些情況下,你要顯示一個單一的網頁在你的本地應用程序,或讓用戶在你的應用程序訪問的外部網頁。你可以簡單地在你的應用程序中嵌入UIWebView對象,它發送一個請求加載的網頁內容。

 創建一個標簽欄控制器

現在回到我們的Xcode項目。首先,讓我回顧一下我們做了什么。如果你按照前面的教程中,你應該建立一個簡單的菜單導航界面的應用程序。這沒有完全實現,只是為了演示需要。

image

在前面的教程中的最后交付程序

在本教程中,我們將要修改應用程序,並創建一個標簽欄界面。你可能會認為這將是很困難的,需要大量的編碼工作。故事板功能引入簡化了一切。導航控制器中嵌入一個標簽欄控制器變得很容易,只需點擊鼠標。

首先,選擇“導航控制器”中MainStoryboard.storyboard。然后選擇“編輯”菜單中,選擇“嵌入”,其次是“標簽欄控制器”。

故事板嵌入標簽欄控制器

導航控制器中嵌入標簽欄控制器

如下圖所示,正如你可以看到,Xcode會自動將標簽欄控制器嵌入到導航控制器內。超級簡單的,對不對?你可能會認為這是微不足道的。在蘋果公司推出的故事板功能前,你需要編寫代碼和設計一個獨立的NIB以嵌入導航控制器。

演示圖板添加標簽欄控制器

嵌入標簽欄控制器后的導航控制器

改變標簽欄的條目名

默認情況下,標簽欄的條目名是未命名,沒有圖標的。在導航控制器選擇標簽項。你可以自由更改名稱,並在“屬性”檢查器中指定一個圖標。標簽欄項目是默認為“自定義”的標識。當它設置為自定義,這意味着你必須手動指定的標題和圖像。

“故事大綱”選項卡欄項

“自定義”選項卡欄項目

您也可以使用一些內置的標簽欄項目(例如,我的最愛(Favourite),最精彩的(Top Rated)),已經包含一個圖標。讓我們保持教程的簡單,就利用內置的項目。選擇“精選(Featured)”的標識符,你的屏幕應該看起來像這樣:

故事板功能選項卡欄項

更改標簽欄的標識符為特色

運行你的應用程序

點擊“運行”按鈕,看看它的外觀。應用程序應該和我們在前面的教程建立的非常相似的,除了有標簽欄。

配方的應用程序標簽欄

添加一個新的標簽

您可以使用選項卡欄界面為不同的操作模式組織你的應用程序。每個選項卡都提供特定的功能。很明顯,至少在有兩個選項卡中使用的應用程序里使用標簽欄控制器。因此,我們要創建一個新的選項卡用於顯示應用程序的“關於”頁面。

將另個“導航器”對象拖動到故事板中。默認的導航控制器,和與之聯系的表視圖控制器。先把他放這里把,待會我們將修改他

標簽欄的新的導航控制器

添加一個新的導航控制器

接下來,我們要建立新的導航控制器和現有的標簽欄控制器之間的關系。按住“控制”鍵,單擊標簽欄控制器,拖動鼠標到新的導航控制器。

標簽欄控制器鏈接導航控制器

鏈接標簽欄控制器和導航控制器

松開鼠標,將顯示一個彈窗。選擇“Relationship – View Controllers”選項。這告訴Xcode的標簽欄控制器,新的導航控制器是他的一部分。

標簽欄控制器的關系提示

建立關系的導航控制器

只要建立的關系,標簽欄控制器會自動添加一個新的標簽並與導航控制器建立聯系。

標簽欄控制器與新Unamed的標簽

新標簽頁的標簽欄控制器

更換新的導航控制器標簽的表示符為“更多(More)”選項卡欄項。保存Storyboard,並再次運行該應用程序。這是你是不是看到新的“更多(More)”標簽?

配方的應用程序兩個選項卡:

創建“關於”的網頁視圖

“更多”標簽現在是空的。我們打​​算把“關於”頁面顯示變成一個web視圖。首先,刪除“表視圖控制器”,只需選擇“表視圖控制器”,然后單擊“刪除”按鈕將其刪除。然后點擊對象庫“視圖 - 控制器(View-Controller)”對象,將視圖控制器(View Controller)拖出。

故事板的空白 - 視圖 - 控制器

更換表視圖控制器視圖控制器

截至目前,空 的視圖控制器與導航控制器不相關。我們必須將它們連接起來。按住命令鍵,選擇導航控制器,並向視圖控制器拖動。

故事板鏈接 - 視圖 - 控制器

鏈接視圖控制器和導航控制器

像我們前面做了的那樣,選擇“Relationship-Root View Controller”選項,在兩個控制器之間建立關系。

故事板視圖控制器的關系

相關的視圖控制器之間建立關系

這個視圖控制器的主要目的是顯示“關於”網頁。iOS的SDK有一個內置的UIWebView對象可以用來顯示網頁內容。您可以簡單地將lUIWebView對象嵌入在任何視圖控制器中。然后你向它發送一個HTTP請求,它會自動加載網頁內容。在對象庫中找到“WebView”,並把它添加到視圖控制器中。

 - 視圖 - 控制器的UIWebView

添加Web視圖 - 視圖 - 控制器

分配一個新的視圖控制器類

正如在前面的教程中講過,一個空白的視圖控制器默認為UIViewController類,只提供了基本視圖的管理模式。很顯然,它沒有一個變量來控制UIWebView。因此,我們必須創建一個新的從UIViewController繼承的視圖控制器類。

在項目瀏覽器中,用鼠標右鍵單擊“RecipeBook”文件夾並選擇“New File ...”。

故事板新的視圖控制器

在Xcode項目中創建新文件

選擇“Objective-C類的類模板”下的Cocoa Touch的。

image

選擇目標C類

將該類命名為為“AboutViewController”,並設置他為“UIViewController”的子類。請確保取消選中“XIB用戶界面”的選項。我們正在使用演示板設計用戶界面,我們不需要創建一個單獨的界面生成器文件。單擊“下一步”,在你的項目文件夾中保存。

新一類AboutViewController

創建一個新類 - AboutViewController

接下來,將拖拽的WebView指定為新建的視圖控制器“AboutViewController”。回到故事板編輯器,選擇視圖控制器。在身份檢查器(identity inspector),改變類為“AboutViewController”。

查看控制器與AboutViewController

設置自定義類AboutViewController

使用UIWebView加載網頁

要請求UIWebView加載網頁內容,我們需要寫幾行代碼。簡單地說,我們需要實現的有兩樣東西:

>聲明一個變量給UIWebView,將它與故事板中的Web視圖對象聯系

>使用loadRequest:在UIWebView中加載web內容的方法

添加'About.html“

UIWebView類允許你加載在本地和遠程​​的網頁內容。你可以向它發送一個HTTP請求(例如http://www.google.com)來加載一個遠程網站。或者,你可以告訴UIWebView加載在你的應用程序中的網頁。

指定UIWebView的一個變量

選擇“AboutViewController.h”,並添加一個新的屬性給UIWebView:

1
2
3
4
5
@interface  AboutViewController   :  UIViewController

@property   (nonatomic, strong )  IBOutlet UIWebView   *webView;

@end

轉到的“AboutViewController.m”,並添加如下代碼。確保你的代碼放在“@implement AboutViewController”下:

1
2
3
@implementation  AboutViewController

@synthesize  webView;
如果您忘記了什么是接口和實現,回到 本教程中, 並重新方向這些概念。

像往常一樣,它需要“webView”變量和WebView之間建立連接。在故事板編輯器,按命令鍵,然后點擊“視圖 - 控制器”圖標(剛添加的View Controller最下角的圓圈),將其拖動到Web視圖對象。放開兩個按鈕,彈出一個顯示變量的選擇。選擇“WEBVIEW”變量。

鏈接UIWebView和WEBVIEW

鏈接UIWebView和WEBVIEW變量

加載Web內容

viewDidLoad方法內,添加下面的代碼:


1
2
3
4
5
6
7
8
- ( void )viewDidLoad
{
[super viewDidLoad ];
// Add code to load web content in UIWebView
NSURL *url = [ NSURL URLWithString:@http://www.baidu.com ] ];
NSURLRequest *request = [ NSURLRequest requestWithURL :url ];
[webView loadRequest :request ];
}

The UIWebView class 

UIWebView類提供了一個方便的方法名為“loadRequest:”加載網頁內容。你需要做的,就是提供給URL請求。第5行代碼,得到一個百度的URL路徑。第6行代碼,將NSURL轉換為webview可識別的NSURLRequest。第7行代碼,webview處理請求。

最終成品

點擊“運行”按鈕,並嘗試應用程序。如果你有一切正常,您的最終可交付成果應該看起來像下面,當然這不是百度了,我這是放的一個自己的關於頁面,然后加載自己的網頁。

配方的應用程序兩個選項卡:

總結

故事板簡化了iOS應用程序的用戶界面設計。正如你從本教程中可以看到的,不要寫很多代碼,你可以創建一個標簽欄控制器並將其他控制器嵌入在標簽項目。我們還展示了如何使用UIWebView中加載web內容。UIWebView為移動瀏覽器提供了基本功能。當你需要在你的應用程序中顯示網頁,或嵌入web視圖,只需用它就行。

在后面的教程中,我們將繼續探索其他新功能的演示圖板。敬請關注,.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM