自定义UITableViewCell中的自定义UIView

时间:2013-01-16 22:32:35

标签: iphone ios xcode uiview uitableview

我有一个自定义UITableViewCell子类为ItemDetailCell,它有许多连接到我的storyboard文件的插座。其中一个自定义UIView子类为PriorityView,它在nib文件中有一个UIView(priorityStatusView)的出口。

@property (weak, nonatomic) IBOutlet PriorityView *redPriorityView;

在nib文件(PriorityView.xib)中,我已将File的Owner Custom Class连接到PriorityView。在PriorityView.m我使用以下内容在drawRect中加载nib文件:

NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"PriorityView" owner:self options:nil];
[self addSubview:[array objectAtIndex:0]];

在我的表视图控制器中cellForRowAtIndexPath我试图设置redPriorityView.priorityStatusView的背景颜色,但首先我调用drawRect以便加载nib。我没有使用initWithFrame来加载nib的原因是除了不加载nib之外它似乎使PriorityView无效。我怀疑这种情况正在发生,因为视图已经加载了IBOutlet。我知道它是空的,因为我已经打电话:

NSLog(@"%@, %@", detailCell.redPriorityView, detailCell.redPriorityView.priorityStatusView);

并且都返回null。但是,使用drawRect加载nib确实会将两个日志都返回为null。我现在唯一的问题是背景颜色不会改变:

detailCell.redPriorityView.priorityStatusView.backgroundColor = [UIColor yellowColor];

我也试过使用setBackgroundColor无济于事。实际上,redPriorityViewredPriorityView.priorityStatusView的所有属性似乎都没有改变。背景颜色只是一个例子。

很抱歉这么做,我只是很难完成这项工作。在此先感谢您的帮助!

修改

我尝试使用redPriorityView中的方法设置ItemDetailCell的属性并通过cellForRowAtIndexPath调用它,但即使方法中的NSLog被称为属性不要改变。我认为问题可能在于视图如何连接到PriorityView文件。

2 个答案:

答案 0 :(得分:0)

实施- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath方法,并尝试在其中设置背景颜色。希望这有帮助!

答案 1 :(得分:0)

尝试将访问者设置为强。也许...