簡體   English   中英

swift-如何在不使用XCode接口構建器的情況下將UI連接到代碼?

[英]swift - how to connect UI to code without using XCode interface builder?

因此,在Xcode Swift代碼中,您只需將UI組件拖到文本編輯器中,然后創建一個IBOutlet@IBOutlet weak var myLabel:UILabel

我的問題是:

  1. 我讀到IBOutlet在編譯期間解析為無。 它只是Xcode本身的關鍵字。 我假設Xcode在拖動UI時生成了一些代碼。 那么,代碼在哪里,它看起來像什么?
  2. 說,如果我沒有Xcode,我應該在哪里/如何編寫代碼以編程方式將UI與它的行為聯系起來?
  3. 畢竟,是否可以在沒有Xcode的情況下編寫,編譯和部署IOS項目?

謝謝,

這個相關問題回答了如何通過配置Xcode在不使用其故事板的情況下在Xcode中進行編程。

是的, IBOutlet不做任何事情。 在Objective-C中,它定義為宏,並且在編譯時將不替換任何內容。 沒有特殊代碼。 另一方面,Interface Builder看到了這一點,並允許配置這些屬性的連接。 然后,在編譯時將哪個插座屬性連接到哪個對象的信息保存在nib文件中。 系統加載所有這些對象之后,它將逐步執行已保存的連接,並使用常規setValue:forKey:機制將插座屬性設置為適當的對象。

如果您為其中一個網點實現了自定義設置器,並在其上設置了一個斷點,則可以看到這一點。

所有這些僅是支持Interface Builder所必需的。 如果不使用它,則不需要插座的概念-您只需在創建對象后保留對所需對象的引用即可。

同樣的事情也適用於IBAction 在Objective-C中,再次通過宏將其定義為無效。 界面生成器可以看到它們,並允許您在那里建立連接。 加載筆尖文件時,這些文件通過將addTarget:action:forControlEvents:消息發送到此操作所連接的控件來進行連接。 如果您不使用IB,則可以自己發送此消息以建立連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM