2016-03-21 11 views
2

私はiOSフレームワークで作業しています。ユーザーが特定のView Controllerを入力または終了したときにイベントを記録するという要件があります。そのために、何らかの理由でルートビューコントローラが変更されたときにカスタムメソッドを起動するための通知を登録できるかどうかを考えていました。またはKVOを使用してください。しかし、私はそのような通知を見つけることができないので、実装の観点からこれを行う方法を理解していません。UIWindow RootViewControllerが変更されたときにイベント/メソッドをトリガーするSWIFT

この点に関するお手伝いをいただければ幸いです。ありがとう。

これはフレームワークプロジェクトです。そのため、フレームワークは構築され、別のアプリケーションに追加/埋め込まれます。私はそのアプリケーションのビューコントローラに関する情報はありません。私がアクセスできるのはUIWindowのルートビューコントローラだけです。ですから、いつ変化が起こるかを知る必要があります。

+0

ログenteries:

はここに非常に有益な記事を見つけました。代わりに 'viewWillAppear'と' viewWillDisappear'を使うこともできます。詳細については、[UIViewController ClassReference](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/occ/instm/UIViewController/viewDidDisappear :) – NSNoob

+1

を参照してくださいFrameworkプロジェクトであることを確認します。だから私は事前に何も知らない。誰でも自分のアプリケーションに自分のフレームワークを埋め込んで使用することができます。どのようにView Controllerメソッドにアクセスしますか?私はこれが可能だとは思わない。もしそうなら、教えてください。 –

+1

ああ、私はあなたの質問を誤解しました。うん、その方法はあなたのために動作しません。私はNSNotificationについてもわからない。私は何かを見てみましょう。私が何か適切なものを見つけたら、私はあなたに戻ってきます。 – NSNoob

答えて

0

UIViewControllerviewWillAppearviewWillDisappearをオーバーライドして、表示コントローラの表示/非表示を知ることができます。

また、viewDidAppearviewDidDisappearを使用することもできます。

あなたがユーザーに代わってロギングを行いたい場合は、あなたが本当に2つのオプションがあります。

1.viewWillAppear/viewWillDisappearに必要なロジックを実装しており、それらは上書きするためのベースUIViewControllerサブクラスを提供しますメソッド。

2.、彼らのUIViewControllerサブクラスで独自に手動でコールするために(logAppearEventlogDisappearEventなど)便利なメソッドを実装します。

+0

コーディング例を追加すると良いでしょう。それ以外の場合は、私がコメントを残したはずです。 – NSNoob

+0

@ NSNoobどのように見えますか?空のメソッド宣言?すべての回答にコードスニペットが必要なわけではありません。 ;) – damirstuhec

2

これは機能しています。その答えは、方法のすばらしさでした。問題の最初の解決策としては推奨されません。しかし、慎重に使用され、あなたが行っていることを正確に知っていれば、それは行く方法です。 `viewDidAppear`とそのVCの` viewWillDisappear`方法でMethod Swizzling

関連する問題