2016-08-17 147 views
1

我準備了一個具有關聯的Xib文件的自定義UIView子類。在故事板上,我放置一個UIView並將其設置爲我的自定義子類。在自定義視圖的initWithCoder:方法中,我加載xib並初始化子視圖。這很好。initWithCoder:自定義視圖 - 確定正在實例化的視圖控制器

現在我想在其他地方使用相同的自定義視圖,但我希望我的子視圖的佈局不同。我想在同一個Xib文件中創建第二個自定義視圖佈局,並根據哪個視圖控制器包含自定義視圖來加載正確的視圖佈局。因爲我所有的子視圖和所有的邏輯都是一樣的,只是佈局是不同的,我正在尋找這樣的事情:

-(id)initWithCoder:(NSCoder *)aDecoder{ 
    if (self = [super initWithCoder:aDecoder]) { 
     if (self.subviews.count == 0) { 
      UINib *nib = [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil]; 
      UIView *subview; 
      if ([/*instantiating VC isKindOfClass:viewController1.class]*/) { 
       subview = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0]; 
      } 
      else if ([/*instantiating VC isKindOfClass:viewController2.class]*/) { 
       subview = [[nib instantiateWithOwner:self options:nil] objectAtIndex:1]; 
      } 
      subview.frame = CGRectMake(0, 0, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame)); 
      subview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
      [self addSubview: subview]; 
     } 
    } 
    return self; 
} 

有什麼辦法來訪問有關被實例化視圖控制器信息這個自定義視圖?

回答

0

是的,有兩種方式,放置兩個視圖,並設置兩個視圖的標記不同,例如10和20在你想用UIView子類設置自定義類的故事板中。

然後在你的UIView子類做到這一點:

-(id)initWithCoder:(NSCoder *)aDecoder { 

if (self = [super initWithCoder:aDecoder]) { 

    if (self.subviews.count == 0) { 

     UINib *nib = [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil]; 
     UIView *subview; 
     if (self.tag == 10) { 
      subview = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0]; 
     } 
     else if (self.tag == 20) { 
      subview = [[nib instantiateWithOwner:self options:nil] objectAtIndex:1]; 
     } 

     subview.frame = CGRectMake(0, 0, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame)); 
     subview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
     [self addSubview: subview]; 
    } 


} 
return self; } 

在故事板視圖10將通過你的第一個視圖和故事板標籤20視圖替換標籤將通過你的第二個觀點所取代。

建立,運行和享受!

相關問題