2011-07-12 48 views
7

我正在製作一個UIControl子類,因此以編程方式佈置其中的所有內容。現在我已經完成了,我需要在多個屏幕上多次放置它。我知道你不能爲iOS創建一個IB插件,但是沒有辦法在IB中使用UIView並將其大小/放置在我的控件應該放置的位置,然後將其「Custom Class」屬性設置爲我的UIControl的子類?我知道我不會看到它在IB中的真實表現,但至少這可以讓我在屏幕上設置相對於其他事物的整體大小和位置。我還在我的viewController中創建了IBOutlets,並將IB中的視圖正確連接到它們。然而,當運行時,我沒有看到任何自定義,並且當我在initWithFrame:loadView中設置斷點時,我從來沒有看到我的代碼正在被調用。我應該怎麼做?自定義UIControl子類在IB中爲iOS設置位置

+0

您正在使用哪種版本的IB/Xcode? – bshirley

+0

'initWithCoder:'在從一個筆尖加載一個對象時被調用,您可以交替地覆蓋'awakeFromNib' – bshirley

+0

使用Xcode 4.0.1。 @bshirley我認爲是這種情況,所以我也在'loadView'中設置了斷點,在任何情況下都應該調用它。 – jamone

回答

10

您可以將UIView拖放到nib文件上,然後使用identity inspector(command-opt-3)將該類更改爲UIView的任何子類。

您將需要設置初始化代碼子類從筆尖加載時調用,即initWithFrame:。如果您編寫完整性代碼,則兩種方法(基於程序和基於筆尖的)都應調用相同的初始化。

如果你喜歡,只是創建和初始化代碼addSubview:,然後實現layoutSubviews佈局您的自定義子視圖。這將在任何時候調用視圖以及初始調用。

+0

我是個白癡。 'loadView'不是'UIView'上的方法,而是'UIViewController'上的方法。其他然後這個混亂我正是這樣的 – jamone

+1

德哦 - 那*會*是一個問題=) – bshirley

相關問題