Objective c 我可以使用属性来确定对象的类吗?

Objective c 我可以使用属性来确定对象的类吗?,objective-c,ios,uiview,properties,subclass,Objective C,Ios,Uiview,Properties,Subclass,我在IB中创建了一个自定义UITableViewCell。 我所有的牢房都会有这样的总体布局。但是,在某些单元格中,两个白色视图将为classA,而在其他单元格中,两个白色视图将为classB。(UIView的两个子类)。我尝试使用属性指定这两个视图的特定子类 我将这两个视图设置为单元格的属性 @property (nonatomic, retain) IBOutlet UIView *leftView; @property (nonatomic, retain) IBOutlet UIVie

我在IB中创建了一个自定义UITableViewCell。

我所有的牢房都会有这样的总体布局。但是,在某些单元格中,两个白色视图将为classA,而在其他单元格中,两个白色视图将为classB。(UIView的两个子类)。我尝试使用属性指定这两个视图的特定子类

我将这两个视图设置为单元格的属性

@property (nonatomic, retain) IBOutlet UIView *leftView;
@property (nonatomic, retain) IBOutlet UIView *rightView; 
在生成表视图的视图控制器中,我尝试创建Subassa类型的对象并将其指定为leftView,这样leftView将是Subassa类型的。在其他单元格中,我将创建子类B的对象并将其设置为leftview,以便在这些单元格中,leftview将属于子类B

//equationTextField is a subclass of UIView
EquationTextField *textField = [[EquationTextField alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; // arbitrary frame
cell.leftView = textField;

但是,此代码不起作用。是否有更好的方法来分配“我的视图”的特定类?

您现在所做的很好,但您可能希望研究使用两种不同的单元格类型(已嵌入自定义视图)来提高性能-每种类型都可以有不同的重用标识符,您可以根据索引路径进行选择。每次在cellForRowAtIndexPath中创建视图都不是一个好主意


您甚至可以从同一个单元派生这两种类型,只需使用不同的重用标识符,并仅在首次创建单元时添加正确的子类

如果需要,您可以检查cell.leftView是否是您的EquationTextField:

if([cell.leftView isKindOfClass:[EquationTextField class]]) {
    NSLog(@"View is EquationTextField");
}
else {
    NSLog(@"View is not EquationTextField");
}

不清楚您的问题是什么-您不高兴将左视图和右视图定义为UIView吗?我有两个子类UIView,Subassa和Subassb。在表的某些单元格中,这两个视图需要是子类。在其他单元格中,视图需要是子类B。因为我在IB中创建了视图,所以我需要在代码中引用它们,所以我创建了UIView类型的属性,因为两个子类都可以分配给该属性。我需要一种方法来声明我是否希望左视图是子类a还是子类BIt没有问题(除非我误解了你的问题)。在cellForRow方法中进行设置,并根据索引路径使用您需要使用的任何类。我为所有单元格使用UITableViewCell的一个子类。我创建了一个普通的单元格,因为我所有的单元格都由相同的组件组成,只是不同的子类。我仍然不确定我是否解释得足够好。我将尝试添加一个picturep.s。您可能必须强制转换对象实例:cell.leftView=(UIView*)textField;