2015-01-26 69 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

相关问题