2

私はiOSフレームワークに取り組んでいます。ユーザーが特定のView Controllerに出入りするときにイベントをログに記録する必要があります。そのために、ルートView Controllerが変更されたときにカスタムメソッドをトリガーする通知を登録できるかどうかを考えていました。または、おそらく KVO を使用します。しかし、そのような通知が見つからないため、実装の観点からこれを行う方法がわかりません。

この点で何か助けていただければ幸いです。ありがとう。

これはフレームワーク プロジェクトであることに注意してください。したがって、フレームワークが構築され、別のアプリに追加/埋め込まれます。そのアプリのView Controllerに関する情報はありません。アクセスできるのは、UIWindow のルート ビュー コントローラーだけです。そのため、変更がいつ発生するかを知る必要があります。

4

2 に答える 2

2

動作しました。その答えは、メソッドの入れ替えでした。問題の最初の解決策としてはお勧めしません。しかし、慎重に使用し、自分が何をしているのかを正確に理解していれば、それが進むべき道です。

ここで非常に役立つ記事を見つけました: Method Swizzling

于 2016-03-24T12:16:32.970 に答える
0

をオーバーライドして、View Controller がいつ表示/破棄されようとしているのかを知ることUIViewControllerができます。viewWillAppearviewWillDisappear

viewDidAppearまたは、とを使用することもできますviewDidDisappear

ユーザーに代わってログを記録したい場合は、実際には 2 つのオプションがあります。

1. /メソッドで必要なロジックを実装する、オーバーライドする基本UIViewControllerサブクラスを提供します。viewWillAppearviewWillDisappear

2.サブクラスで独自に手動で呼び出すための便利なメソッド(logAppearEvent、 など)を実装します。logDisappearEventUIViewController

于 2016-03-21T07:06:35.703 に答える