在iPhone上進行開發(5):我們的第一個應用程序(III)

En 我們上一篇文章 我們在應用程序的界面中包含了一個Label,一個TextField和一個Button。 我們希望使用單擊按鈕時使用在TextField中輸入的內容來更新Label的內容。 我們已經(步驟1)創建了項目,並且(步驟2)使用InterfaceBuilder定義了屏幕。 現在,我們將繼續其餘步驟以使應用程序正常運行。

步驟3.在ViewController中創建變量。

我們的界面正確。 實際上,如果我們執行了Build&Go,我們可以看到我們的狀態:

但是顯然,按下按鈕時什麼也沒有發生,因為我們還沒有取得最基本的進展。 在第3步中,我們將在HelloWorldViewController中的接口(.h文件)和實現(.m文件)中引入變量和方法。 為此,正如我們在上一篇文章末尾所指出的,我們必須知道TextField對應於UITextField類,Label對應於UILabel類。 這兩個類在UIKit框架內。

如果尚未關閉並保存Interface Builder,請執行此操作,然後在XCode中打開文件HelloWorldViewController.h。 現在的代碼將如下所示:

我們已經在研究一些Objective-C。 在這段代碼中,我們看到了UIKit庫的導入聲明,其中UILabel和UITextField類位於其中。 我們看到如何聲明接口,以及它是從UIKit的通用UIViewController擴展的。

在接口代碼中,我們包含以下代碼:

現在,我們可以解釋我們做了什麼:

  • 我們在@interface塊中聲明了UILabel和UITextField類型的2個屬性,分別具有2個變量名* label和* textField。 前方出現IBOutlet。 這是什麼我們自我解釋。 IBOutlet不是一種變量。 是一個指令,可幫助Interface Builder知道這些UILabel和UITextField類型的變量的存在。 順便說一句,請記住,在上一篇文章中,我們給了您一個技巧,以了解Interface Builder中控件對象的變量類型(按鈕,標籤,文本字段等)。 另一方面,在變量名前面加*的問題可能會使Java程序員感到驚訝,而不是讓C程序員感到驚訝,但是知道這是您將如何在Objective-C中編寫實例變量的方法。
  • 聲明了UILabel和UITextField屬性。 非原子性和保留性,我們暫時不會看到,它與內存管理有關。
  • 我們看到我們聲明了一個方法updateText。 它前面有一個-號,表示它是一個實例方法,而不是類方法(為它們說明了+號)。 我們無法對此進行解釋,因為這是基本的面向對象程序設計。該方法不返回任何內容(即void),並且接收類型為id的參數。 基本上,它是指將導致調用我們的updateTexto方法的對象的標識符,該方法將更新標籤的值。 我們可以猜測,因為該控件將是按鈕本身...

完成此操作後,我們就完成了步驟3。


步驟4.將視圖控件綁定到控制器變量。

如果我們進行審查,一方面,我們已經使用Interface Builder開發了接口,另一方面,我們在HelloWorldViewController.h(HelloWorldViewController.m控制器類的接口)中具有與那些控件相關的變量。 但是,視圖和控制器之間仍然沒有關係,也就是說,我們沒有給出任何關聯的指令,例如,我們在Interface Builder中設計的文本字段與我們已在其中放置的UITextField類型的變量相關聯。上課。 現在,我們要執行此任務。 我們通過單擊HelloWorldViewController.xib再次打開Interface Builder,單擊文本框,然後在Inspector面板中轉到第二個選項卡(“文本字段連接”)。 我們看到有一個名為“參考插座”的部分,沒有任何標記。 這意味著目前,Interface Builder尚不知道此文本字段與類的IBOutlet(接口生成器插座)之間的任何關係...但是我們在HelloWorldViewController中有一個UITextField IBOutlet,因此讓我們進行鏈接。

為此,如圖所示,通過單擊“新引用出口”旁邊的小圓圈,我們將其拖動到名為HelloWorldViewController.xib的窗口的文件所有者。 它將讓我們選擇2個選項,視圖(完整視圖)和textField(我們的變量)。 顯然,我們選擇了textField,因此我們將文本框與其類型為UITextField的變量相關聯。 順便說一句,File'sOwner或文件所有者既不大於也不小於我們的控制器類...

我們使用標籤重複該操作,並將其與我們的控制器變量標籤相關聯。 使用按鈕,則有所不同。 在這種情況下,我們將其與我們的updateTexto操作相關聯,但針對特定事件。 使用“ Touch Up Inside”事件執行此操作,然後選擇我們的updateTexto方法:

通過這種方式,我們已經將使用Interface Builder定義的控件與放置在控制器中的變量進行了關聯。 我們關閉Interface Builder並保存所有內容,然後返回到XCode的最後一步。

步驟5.最新動態。

在XCode中,打開HelloWorldViewController.my,然後放入以下代碼,以使我們的類如下所示:

如果我們仔細觀察,我們只需將代碼塊@synthesize放在接口.h updateTexto中聲明的方法的實現即可。 在該代碼下,您將有很多註釋代碼。

@synthesize行的作用類似於生成OO語言(封裝)中典型的典型getter / setter(訪問器/變異器)。 我們需要它們,以便控制器到達例如文本框的內容。

如您所見,updateTexto方法僅使用文本字段的內容更新標籤的文本。 我們完了。

現在,我們只需進行Build&Go,您就會看到輸入文本字符串並單擊按鈕時,標籤的內容就會更新。 在下一篇文章中,我們將介紹我們的應用程序的改進。


在 Google 新聞上關注我們

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   彼得 他說:

    很好的教程,非常清晰和簡單。

  2.   rubdotto.com 他說:

    好吧,我一定很甜瓜me,因為它對我不起作用。 我已經在字符串中捕獲了該值,但該值接受了文本,但它沒有將其分配給標籤,至少它沒有繪製它,因為我嘗試查看label.text,並告訴我超出範圍...

  3.   leo2279 他說:

    出色的教程,它確實很好地解釋了iphone的這一發展,希望您繼續發布更多的教程。

    問候

  4.   馬里亞諾 他說:

    嗨,太酷了,但這是行不通的。 要使其工作,我必須將界面生成器的視圖與多維數據集中的視圖鏈接起來,就像您教文本字段和標籤一樣。 對於其餘的內容,非常感謝。