2017-04-25 7 views
0

私は、登録されたUIViewが画面から削除されたときを追跡するクラスをアプリケーション内に作成したいと思っています。たとえば、[MyViewTracker trackView:view]を呼び出して、デリゲートコールや削除されたときの通知のようなものを待つようなものです。サブビューせずにスーパービューからUIViewを削除する方法を追跡するには?

私はビューを所有していないので、それらをサブクラス化して私に通知することも、KVOを使用してview.superviewまたはview.windowで変更を追跡することもできませんでした。追跡されているビューがまだ表示されているかどうか調べることはできますが、良い解決策のようには見えません。

他に解決策がありますか?たぶん、UIViewの仕組みを驚かせるだろうか?

ご協力いただければ幸いです。

おかげ

+0

目的のCブロックを使用してロジックを実行しようとします。 –

+0

あなたはremoveFromSuperviewメソッドをうまくいき、通知を送ることができます。 – bseh

+0

KVOを使用していた問題は何ですか? – shallowThought

答えて

0

それは本当にハックとあなたが避けるべきものと思われるが、あなたは、removeFromSuperviewをスウィズルトラッキングメソッドを呼び出し、元の実装をコールバックすることができます。それは本当に必要な場合です。 スウィズルに関する優れた記事があります:https://www.mikeash.com/pyblog/friday-qa-2010-01-29-method-replacement-for-fun-and-profit.html

+0

私はこれだけではなく、サブクラスのpreferrableであれば... –

+0

ザ・OPは、彼はそれが適切な/クリーンな方法であれば、私はまだだろうが、私は、 'removeFromSuperview'方法をスウィズルでそれを行うことができた – kkodev

+0

をサブクラス化することはできません言っただろそれをするために。私は他の人が使うことができる図書館に入れようとしていますので、すごくうんざりして使用するのは少し怖いです。スウィズリング方法では、私はそれは〜KVO準拠〜作り、KVOが働いていたかのように使用して、元の実装前後に 'willChangeValueForKey'と' didChangeValueForKey'を呼び出しています。 –

関連する問題