SDNestedTable と呼ばれる CocoaControls で見つけたコントロールを使用したい: 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);
}
これを行うには2つの方法がありますが、私は初心者であり、これを処理する最良の方法を確認したいと考えています:
1) SDSelectableCell.m のコードを変更するだけです。3 つの色を設定するには 3 行を変更する必要があり、それで完了です。ただし、このようなライブラリをインポートしてコードを変更するだけでは、悪い習慣だと思います。プロジェクトに取り組んでいる誰かがライブラリを再インポートする必要があり、それが変更されたことを知らない場合、将来問題が発生することを予見できます。
1a) すべての名前を変更/リファクタリングして、SD にならないようにすることもできると思います。これにより、少なくとも他の誰かが元の SDNestedTable ライブラリであると考えるのを防ぐことができます。
2) これら 3 つのメソッドをサブクラス化SDSelectableCell
してオーバーライドできます。ただし、ライブラリ内の他のすべてのクラスをサブクラス化する必要があります。これらは SDSelectable セルをインスタンス化し、それをすべて変更する必要があるためです。
3) 他の方法は?カテゴリと拡張機能は機能していないようですが、何かが足りないのかもしれません。