私は、ペイントのようにタップして描画するビューを持っているviewControllerを持っています。そのコントローラーには、画面をクリアする方法があります-
- (void) clearS
{
[(TouchTrackerView *)self.view clear];
}
今、ボタンで画面を占有したくないので、別の画面にアプリケーションを開始位置にリセットするボタンがあり、画面をクリアしたいです。そのボタンは別のView Controllerに属しており、とりわけ、描画View Controllerを呼び出して、画面を消去するように依頼したいと考えています。したがって、描画ビューコントローラーで次のように通知を設定します。
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(clearS) name:@"clearScreen" object: nil];
そして、ボタンをクリックした場所からビューコントローラーで次のようにします。
[[NSNotificationCenter defaultCenter] postNotificationName:@"clearScreen" object: nil];
私が理解しているように、ボタンがクリックされると、通知が投稿され、メソッドが呼び出されます。そして、それはクラッシュします。
[(TouchTrackerView *)self.view clear]
私が理解している問題は、メソッド呼び出しの瞬間に「自己」変数が非描画ビューコントローラーであり、それ自体のビューで明確なメソッドを実行しようとすることであり、それが欠けてクラッシュします。
メソッドを正しいView Controllerに送信するにはどうすればよいですか? 私の考えに欠陥はありますか?たぶん、これはより良い方法でアプローチできますか?
編集: 私は問題を発見しました、
[(TouchTrackerView *)self.view clear]
view を呼び出し、それが UIScrollView であり、clear メソッドをサポートしていません。したがって、正しいビューを含むプロパティを作成し、それを次のように変更しました
[(TouchTrackerView *)self.correctView clear]
そしてそれは魅力のように機能します。
たった 2 行のコードなので、通知を選択しました。私は初心者であり、デリゲートに頭を悩ませるのが難しいため、これをそのままにしておきます。特に機能することを確認します。