我在IB中创建了自定义UITableViewCell。
我的所有细胞都将采用这种总体布局。但是,在某些单元格中,两个白色视图将是classA,而在其他单元格中,两个白色视图将是classB。 (UIView的两个子类)。我尝试使用属性分配两个视图的特定子类。
我将两个视图设置为单元格的属性
@property (nonatomic, retain) IBOutlet UIView *leftView;
@property (nonatomic, retain) IBOutlet UIView *rightView;
在我创建表视图的视图控制器中,我尝试创建一个类为subclassA的对象并将其指定为leftView,这样leftView将是子类A的类型。在其他单元格中,我将创建子类B的对象并将其设置为leftview,以便在这些单元格中,左视图将是子类b。
//equationTextField is a subclass of UIView
EquationTextField *textField = [[EquationTextField alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; // arbitrary frame
cell.leftView = textField;
但是,此代码不起作用。有没有更好的方法来分配我的观点的特定类?
答案 0 :(得分:0)
您正在做的事情很好,但您可能想调查两种不同的单元格类型(已嵌入您的自定义视图)以提高性能 - 每个都可以根据索引路径选择不同的重用标识符。每次在cellForRowAtIndexPath中创建视图永远不是一个好主意。
您甚至可以从同一个单元格中派生这两种类型,只需使用不同的重用标识符,并仅在首次创建单元格时添加正确的子类。
答案 1 :(得分:0)
如果需要,您可以检查cell.leftView是否是您的EquationTextField:
if([cell.leftView isKindOfClass:[EquationTextField class]]) {
NSLog(@"View is EquationTextField");
}
else {
NSLog(@"View is not EquationTextField");
}