我有一个自定义UITableViewCell
分类为ItemDetailCell
其中有许多出口连接到我的故事板文件。其中有一个自定义UIView
分类为PriorityView
,它在nib文件中有一个出口到UIView
(priorityStatusView)。自定义UIView自定义UITableViewCell
@property (weak, nonatomic) IBOutlet PriorityView *redPriorityView;
在nib文件(PriorityView.xib)中,我已将文件所有者自定义类连接到PriorityView。在PriorityView.m
我使用加载在drawRect
笔尖文件:
NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"PriorityView" owner:self options:nil];
[self addSubview:[array objectAtIndex:0]];
在我的表视图控制器的cellForRowAtIndexPath
我想设置的redPriorityView.priorityStatusView
背景颜色,但首先我打电话drawRect
使笔尖加载。我没有使用initWithFrame
加载笔尖的原因是,除了不加载笔尖之外,它似乎使PriorityView
无效。我的怀疑是这样的,因为视图已经加载了IBOutlet
。我知道它是空的,因为我呼吁:
NSLog(@"%@, %@", detailCell.redPriorityView, detailCell.redPriorityView.priorityStatusView);
并且都返回null。但是,使用drawRect
加载该笔尖会将两个日志都返回为非空。我现在我遇到的唯一问题是,背景颜色不会改变使用:
detailCell.redPriorityView.priorityStatusView.backgroundColor = [UIColor yellowColor];
我也用setBackgroundColor
无济于事尝试。实际上,redPriorityView
或redPriorityView.priorityStatusView
的属性似乎都没有改变。背景颜色只是一个例子。
对不起,我只是很难做出这项工作。预先感谢任何帮助!
编辑
我曾尝试在ItemDetailCell
使用方法设置redPriorityView
的属性,并通过调用cellForRowAtIndexPath
,但即使在该方法中NSLog
被称为属性不会改变。我认为问题可能在于如何将视图连接到PriorityView
文件。
很难确切地告诉你在这里做什么,但是使用drawRect不是一条可行的路。对于从笔尖出来的东西,你想使用initWithCoder而不是initWithFrame。一个更基本的问题是,为什么你要为priorityStatusView使用单独的nib文件,而不是在你的ItemDetailCell中首先创建它? – rdelmar
@rdelmar我在detailCell中使用了三次视图。当最终它将有一个子视图和点击手势识别器,所以我认为如果我将其分类,就会更容易控制'UIView'的所有功能。 –
@rdelmar此外,无法将手势识别器添加到原型单元格。所以使用自定义视图似乎是我唯一的选择。 –