ヘッダーファイルにアクセスできないクラスにカテゴリを追加する方法はありますか?"隠し"クラスにカテゴリを追加する方法
テスト目的のために、私はUITableViewCellDeleteConfirmationControl
にカテゴリを追加したいと思いますが、そのクラスはプライベートフレームワークの一部です(私が知る限り)。
どうすればいいですか?私は確認ボタンをタップシミュレートするために、フランク・テスト・フレームワークを拡張しようとしています
(大きな赤いボタンを「削除」)削除しようとすると表示されます。
推敲(mihiriosの要求あたり) UITableViewCell
。 FrankはUIControl
にtap
メソッドを追加します。なんらかの理由で、フランクのコントロールをタップする通常の方法は、UITableViewCellDeleteConfirmationControl
クラス(サブクラスUIControl
)では機能しません。
回避策を作成しました。次の方法で、UITableViewCell
にカテゴリを追加しました。
- (BOOL)confirmDeletion {
if (![self showingDeleteConfirmation]) {
return NO;
}
UITableView *tableView = (UITableView *)[self superview];
id <UITableViewDataSource> dataSource = [tableView dataSource];
NSIndexPath *indexPath = [tableView indexPathForCell:self];
[dataSource tableView:tableView
commitEditingStyle:UITableViewCellEditingStyleDelete
forRowAtIndexPath:indexPath];
return YES;
}
これは、テーブルのデータソースを検索し、ユーザが確認ボタンをタップしたとき、システムが何をするかである(UITableView
のマニュアルに従って)そのtableView:commitEditingStyle:forRowAtIndexPath:
メソッドを呼び出します。
これは機能しますが、tap
メソッドを追加して、UITableViewCellDeleteConfirmationControl
をタップ可能なボタンに見せて、Frankのデフォルトの設定を無効にすることをお勧めします。 tap
メソッドは、確認ボタンを含むセルを見つけ、[cell confirmDeletion]
を呼び出します。
UITableViewCellDeleteConfirmationControl
のカテゴリを宣言しようとすると、コンパイラは「インターフェイス 'UITableViewCellDeleteConfirmationControl'を解決できません」という文句を言います。
誰かがclass-dumpを使用して生成したヘッダーファイルを使用しようとすると、_OBJC_CLASS _ $ _ UITableViewCellDeleteConfirmationControlというシンボルが見つからないとリンカが文句を言います。
質問を詳しくお聞かせください。 – iMash