我想使用我在 CocoaControls 上找到的一个名为 SDNestedTable 的控件:https ://github.com/serverdensity/ios-SDNestedTable
我已经对类进行了子SDNestedTableViewController
类化,但我想更改表格单元格的背景颜色,但没有提供这样做的方法。
SDGroupCell
库中的其他类是SDSubCell
继承自SDSelectableCell
. SDSelectableCell
包含 3 种根据单元格状态更改背景的方法。
以下是中的相关方法SDSelectableCell.m
:
- (void) styleEnabled
{
for (UIView *view in checkBox.subviews) [view removeFromSuperview];
[checkBox addSubview:onCheckBox];
checkBox.alpha = 1.0;
itemText.alpha = 1.0;
self.backgroundView.backgroundColor = UIColorFromRGBWithAlpha(0x0d2e4d, 1.0);
}
- (void) styleDisabled
{
for (UIView *view in checkBox.subviews) [view removeFromSuperview];
[checkBox addSubview:offCheckBox];
checkBox.alpha = 1.0;
itemText.alpha = 0.4;
self.backgroundView.backgroundColor = [UIColor colorWithWhite:0.0 alpha:1.0];
}
- (void) styleHalfEnabled
{
for (UIView *view in checkBox.subviews) [view removeFromSuperview];
[checkBox addSubview:onCheckBox];
checkBox.alpha = 0.45;
itemText.alpha = 0.7;
self.backgroundView.backgroundColor = UIColorFromRGBWithAlpha( , 1.0);
}
我可以看到两种方法,但我是新手,想验证处理这个问题的最佳方法:
1) 只需更改 SDSelectableCell.m 中的代码。我必须更改 3 行来设置 3 种颜色,然后我就完成了。但是,我认为导入这样的库并更改代码是不好的做法。如果从事该项目的人必须重新导入库并且不知道它已更改,我可以预见将来会出现问题。
1a)我想我也可以重命名/重构所有内容,使其不再是 SD,这至少可以防止其他人认为它是原始的 SDNestedTable 库。
2)我可以继承SDSelectableCell
并覆盖这 3 种方法。虽然,这需要我对库中的所有其他类进行子类化,因为它们实例化了 SDSelectable 单元格,而我必须更改所有这些。
3)其他方式?类别和扩展似乎不起作用,但也许我错过了一些东西。