2013-04-14 46 views
0

(使用IOS 6的XCode 4.6,ARC,故事板)創建可重用控制

我試圖創建可重用UIView(如在C#用戶控制),因爲我有具有相同數據的一個2個viewControllers輸入和其他顯示。

我在這裏讀到的方式是爲ReusableUIView創建一個單獨的xib文件,併爲其創建相應的h + m文件。添加所有控件並將插座連接到它們。

在故事板我UIViewController在其viewDidLoad我寫了下面的代碼:

NSArray *myNibsArray = [[NSBundle mainBundle] loadNibNamed:@"ReusableUIView" owner:self options:nil]; 
ReusableUIView *myCustomView = [myNibsArray objectAtIndex:0]; 

幾個問題:

  1. 什麼也沒有發生在這一點上,所以我猜我必須連接不知何故自我(UIViewController)與myCustomView
  2. ReusableUIView是UIViewController中的許多控件之一如何設置它的位置
  3. 在廈門國際銀行文件,我不能找到一種方法來設置的UIView的大小,在那裏,當我們設定它的大小

回答

0
  1. 這是更好地自定義視圖加載它的類本身 - 添加在你的自定義視圖類的一些靜態方法,這將是這樣的:

    '+'(ReusableUIView *)的loadView {

    ReusableUIView * loadedView =零;你可以使用NSArray * nibs = [[NSBundle mainBundle] loadNibNamed:@「ReusableUIView」 owner:self options:nil];

    如果([碎粒計數]> 0){

    loadedView = [myNibsArray objectAtIndex:0];

    }

    回報loadedView;

    }

  2. 作爲ReusableUIView繼承的UIView則可以使用幀屬性容易CONFIG其尺寸和位置,並將其作爲對父視圖一個子視圖。

  3. 我不確定是什麼問題,但您可以輕鬆更改xib中的視圖大小。

而且,請注意兩兩件事:

  1. 當您正在加載從筆尖視圖然後- (ID)的initWithCoder(NSCoder *)aDecoder構造方法是卡列斯。所以如果你需要任何額外的設置 - 你必須在這個方法中實現。
  2. 當您使用xib和.h/.m文件進行自定義視圖時,必須在xib中將自定義類標記爲不在文件所有者上,而是直接在您的UIView上。
+0

1.所以ViewController會調用loadView類的方法並用它初始化子視圖? 2.在Xib中,屬性檢查器3中禁用了ReusableUIView的width和height屬性。如何在xib中標記自定義類,而不是在文件所有者上,而是直接在您的UIView上標記。 –

+0

1.是的,在這種情況下,您將能夠調用loadView方法,而不是直接調用nub加載。 -2。嘗試將屬性檢查器中的視圖屬性「Size」更改爲xib中的「Freeform」。 3.當你在xib中時,你可以直接看到3個項目:文件的所有者,第一響應者和你的UIView。您必須選擇UIView,然後在inspector中從左側菜單項中激活第三個,然後在Custom Class字段中選擇您的ReusableUIView。是否有意義? –