我有一個自定義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此外,無法將手勢識別器添加到原型單元格。所以使用自定義視圖似乎是我唯一的選擇。 –