Objective-Cランタイムを使用して、プライベートUIGroupTableViewCellBackground
クラス(そのスーパークラスではないUIView
)にメソッド+layerClass
を追加するにはどうすればよいですか?注:これはテスト用です(がセルbackgroundView
& selectedBackgroundView
をどのように設定するかを参照)。クラスメソッドを動的に追加する方法は?
12
A
答えて
16
インスタンスメソッドの代わりにクラスメソッドを動的に追加するには、を使用してメタクラスを取得し、そのメソッドをメタクラスに追加します。例えば:
UIKIT_STATIC_INLINE Class my_layerClass(id self, SEL _cmd) {
return [MyLayer class];
}
+ (void)initialize {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Class class = object_getClass(NSClassFromString(@"UIGroupTableViewCellBackground"));
NSAssert(class_addMethod(class, @selector(layerClass), (IMP)my_layerClass, "@:@"), nil);
});
}
また、それをコンパイルするために取得するために、すなわち@class UIGroupTableViewCellBackground
、UIGroupTableViewCellBackground
のカテゴリーに+layerClass
メソッドを追加し、前方のクラス定義を使用して、この簡単に操作を行うことができるかもしれません。
+0
#include
0
はこの魔法を試してみてください:
+ (void)load {
class_addMethod(objc_getMetaClass("UIGroupTableViewCellBackground"),
@selector(layerClass), (IMP)my_layerClass, "@:@"), nil);
});
}
+0
"、nil)"は間違っていますが、それはアサーションのものです。 –
関連する問題
- 1. クラスメソッドを追加する方法
- 2. 動的に作成されたPythonクラスメソッドにローカル変数を動的に追加する方法
- 3. 動的データを追加する方法
- 4. AndroidにLinearLayoutを動的に追加する方法は?
- 5. MVC4 EditorForフィールドにラインアイテムを動的に追加する方法は?
- 6. パネルをTCategoryPanelGroupに動的に追加する方法は?
- 7. Nginxにアップストリームを動的に追加する方法は?
- 8. タイムラインにフレームを動的に追加する方法は?
- 9. RelativePanelにTextBlockを動的に追加する方法は?
- 10. jQuery-UIボタンセットに動的にボタンを追加する方法は?
- 11. Angular primeNgタブビューコントロールにタブを動的に追加する方法は?
- 12. クリックイベントに色を動的に追加する方法は?
- 13. ScrollViewに画像を動的に追加する方法は?
- 14. タイムスタンプに間隔を動的に追加する方法は?
- 15. RowValidationErrorTemplateをDataGridに動的に追加する方法は?
- 16. ViewをLinearLayoutに動的に追加する方法は?
- 17. jQueryの動的ドロップダウンに静的オプションを追加する方法
- 18. iphone sdk uitableviewセルイメージを動的に追加する方法は?
- 19. メニュー項目をアンドロイドで動的に追加する方法は?
- 20. 新しいユーザーを動的に追加する方法は?
- 21. フォーマットされたティックを動的に追加する方法は?
- 22. Ruby: "#encoding:UTF-8"を自動的に追加する方法は?
- 23. ボタンを動的に追加または削除する方法
- 24. ディレクティブを動的に追加する方法は?
- 25. WordPressのテーマに動的なサイドバーを追加する方法は?
- 26. SQL動的ピボットクエリに条件を追加する方法は?
- 27. ruamel.yamlで参照を自動的に追加する方法は?
- 28. プラグインを動的に追加する方法は?
- 29. アンドロイドでリストビューの列を動的に追加する方法は?
- 30. NHibernateのクエリオーバー方向に動的ソートを追加する方法
あなた自身に取っていますか? Q/A? 5分後にあなた自身が投稿した回答? – samfisher
@samfisher:これは完全に合法的なことです:http://meta.stackexchange.com/q/2706/ Mattは単に情報リポジトリに追加しています。 –
ありがとう@JoshCaswell私にこれを教えてください.. !! – samfisher