2015-01-26 66 views
0

共用針頭時,我有2個UIViews兩者使用相同的筆尖如何初始化一個UIView子類。這兩個都使用nib picturecell.xib,因爲它們的佈局非常相似。另一個UIView的

PictureCellLabelCell都從ParentCell覆蓋稱爲setImage的方法。

當前picturecell.xib的店主設置爲PictureCell

我實例化PictureCell[[NSBundle mainBundle] loadNibNamed:@"picturecell" owner:self options:nil][0];

我怎麼會實例LabelCell

+0

這些表格視圖單元格嗎? – rdelmar 2015-01-26 23:03:49

+0

是的,他們是桌面單元格。 「ParentCell」類有很多邏輯,並且在應用程序中隨處可見,所以我的新單元必須從那裏擴展。 – 2015-01-26 23:07:56

回答

2

我會爲每個單元格製作單獨的xib,並使用registerNib:forIdentifier:而不是像你那樣加載它們。您可以將單元格複製並粘貼到新的xib中,因此您不必重新制作它。

編輯後:

我確實發現作品分享兩個子細胞之間的廈門國際銀行做了一個共同的用戶界面的一種方式。不要製作一個單元格的xib,而要製作一個是UIView的單元。將所有常用子視圖添加到它,並使文件的所有者成爲基本單元類,以便可以連接您在該類中創建的任何插口。在基本單元的init方法中,可以將此視圖添加爲contentView的子視圖(「content」是在基本單元的.h中創建的屬性)。

@implementation RDBaseCell 

-(instancetype) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { 

     _content = [[NSBundle mainBundle] loadNibNamed:@"CellContent" owner:self options:nil][0]; 
     [self.contentView addSubview:_content]; 
    } 
    return self; 
} 

-(void)layoutSubviews { 
    [super layoutSubviews]; 
    self.content.frame = self.contentView.bounds; 
} 

在表視圖控制器中,爲您的兩個子類註冊類。在子類的init方法中,您可以添加特定於該子類的任何自定義視圖。

+0

是的,這是有效的,但是當我改變一個筆尖時,未來的一個缺點是我必須記住對另一個筆尖做出相同的改變。這對於可擴展性來說並不好。 – 2015-01-27 02:11:07

+0

@RazorStorm,我對你有什麼感到困惑。你說單元格有相似的佈局 - 我認爲這意味着它們不相同,但是在xib中只有一個單元格?你是否在修改其中的一個代碼以使它們不相同? – rdelmar 2015-01-27 02:17:12

+0

是的,我正在修改他們的代碼,使他們相同。要清楚,每個單元格都有一個'UIImageView'。如果它是'PictureCell',我的代碼會將用戶的個人資料圖片放在那裏,如果它是'LabelCell',我的代碼會在那裏放置一個'UILabelView'。 – 2015-01-27 04:42:01

相關問題