2013-03-04 76 views
0

我知道有幾個類似的問題,但我發現它們大多數不適用於目前的IB/iOS或不完整。自定義UIView如何與IB/Xcode 4.5.1和iOS模擬器6.0

我想有一個自定義UIView有一個筆尖,但我沒有得到這個hooked up正確。我花了幾個小時的時間進行調試,然後離開(所以我可以坐在浴缸裏)。如果您覺得這是一項簡單的操作,請事先道歉; thx提前尋求幫助。

要做到這一點目前,我:

  1. 創建自定義視圖文件:文件 - >新建 - >文件 - > Objective-C類,並選擇型的UIView並將其命名爲MyView的;創建MyView.h和MyView.m
  2. 創建自定義視圖筆尖:文件 - >新建 - >文件 - >用戶界面 - >查看並命名爲'酷'; cool.xib已創建
  3. 在IB for cool.xib中,進入Identity Inspector並從UIView - > MyView中設置自定義類;問題1 - 此時MyView是否知道在實例化時加載cool.xib或者需要完成更多工作?
  4. 另外,在IB中,我突出顯示文件的所有者並將其自定義類設置爲MyView。 (? - 不知道這個)
  5. 我想創建一個文本標籤,所以我拖出一個UILabel到cool.xib並在MyView.h中創建一個公共屬性(myLabel)。問題2我是否需要爲MyView設置自定義類?我不認爲這只是一個標準的UILabel。
  6. 我有一個單一視圖應用程序,我想在它上面有一個MyView/cool的實例,所以在IB中,我將一個視圖從對象檢查器拖到ViewController.xib視圖。在IB Identity Inspector中,我將該類設置爲MyView。我將MyView.h文件導入到ViewController.h中,並在界面中爲它設置一個屬性。
  7. 在ViewController.m的viewDidLoad中,我將背景顏色設置爲橙色,並設置myLabel(它正在被Xcode填充,所以它似乎有點工作)。

我運行的應用程序和backgroundColor設置爲橙色,但沒有標籤,並且爲什麼不共享?以上任何步驟都不正確?

THX提前

回答

1

在IB的cool.xib,進入身份檢查,並從UIView的設置自定義 類 - > MyView的;問題#1 - 在這一點上MyView 知道加載cool.xib時,它被實例化或更需要 完成?

它知道你的XIB是由那個類管理的。但還需要做更多的事情,才能讓你使用它。

跳過第4個問題。這將適用於UIViewController,您可以在其中定義由誰負責該文件的所有者。

我想創建一個文本標籤,所以我拖出一個UILabel到cool.xib 並創建MyView.h一個公共屬性(myLabel)。問題#2我是否需要爲此設置自定義類爲MyView? ?我會認爲不是 這只是一個標準的UILabel。

如果您希望能夠從您的MyView訪問的UILabel,你應該從根的UIView的(即一個子類的MyView的)到UILabelMyView並鏈接創建一個IBOutlet。在這種情況下,您不要觸摸文件的所有者。

最後檢查此,爲了讓您加載自定義視圖正確=>Loading custom UIView from nib, all subviews contained in nib are nil?

+0

THX,這個有很大幫助,但我有一些困惑;你說跳過關於文件所有者的第4步,但在你鏈接到的問題中,他們說'你的自定義視圖的nib文件需要將'文件所有者'類設置爲你的自定義視圖類,並且你需要在你的自定義類名爲'toplevelSubView'連接到自定義視圖nib文件中的視圖,該文件充當所有子視圖的容器。 「基於在IB工作似乎是正確的。在上面提供的場景中,是否需要設置文件所有者?我很難實現這一步。 thx again – timpone 2013-03-04 14:32:34

+0

理論上它應該以相同的方式創建自定義的'UITableViewCell',在這種情況下,您不設置文件的所有者,而是設置根的'UIView'。 – Peres 2013-03-04 14:36:16

+0

thx - 我知道你說的是正確的,但我遇到了這個無限循環問題:http://stackoverflow.com/questions/15204547/infinite-loop-trying-to-create-a-custom-view -from-xib-in-ib好像它可能是單獨的 – timpone 2013-03-04 15:05:08