我正在使用故事板,並試圖重用視圖的不同ViewControllers。爲此,我創建了幾乎隨處可見的自定義.xib(MyCustomView.xib
)和類(MyCustomView
)。使用自定義視圖與故事板而不添加兩次
在我的故事板中,我將自定義視圖設置爲MyCustomView
類型。
在MyCustomView.xib
中,將第一響應者設置爲MyCustomView
。
在MyCustomView.m
,添加以下方法:
-(id)initWithCoder:(NSCoder *)aDecoder{
if ((self = [super initWithCoder:aDecoder])){
UIView *myCustomView = [[[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil] objectAtIndex:0];
[self addSubview: myCustomView];
}
return self;
}
問題是,[self addSubview: myCustomView]
增加了一個新MyCustomView
現有MyCustomView
,所以視圖添加兩次。
我該如何擺脫兩者之一?
編輯
我的問題是真不明白,所以我想一些屏幕上限會有所幫助。
這是我的故事板與自定義視圖。自定義類別設置爲MyCustomView
。
(我還添加了一個灰色的背景,僅用於測試目的的標籤)現在
,在MyCustomView.xib
,我設置文件的所有者是MyCustomView
類:
並添加網點標題標籤和imageView:
用上面寫的initWithCoder方法,這工作正常,除了當我調試我可以看到這個: 所以self
是MyCustomView
類型當然,如在故事板選擇,但它包含2子視圖:
- 首先是從我的故事板
- 第二測試標記是從
MyCustomView.xib
,含有本身的視圖標籤和圖像視圖。 這就是我想擺脫的這種看法。
另一種方法是在故事板中完成所有操作 - 在一個控制器中創建自定義視圖,然後將其複製並粘貼到其他控制器中(刪除他們的默認視圖,粘貼之前)。 – rdelmar
這可能會更容易,但是每次我在控制器中修改視圖時,都必須相互修改它,這就是爲什麼我需要它在.xib文件中。 – Damien