4 つUIViewの s:viewAがルート ビューで、vhich がviewBそのサブビューです。viewBhas viewCas its subview and viewChas viewDas its subview. したがって、4 つのビューの階層があります。viewD基本的には、タップして何かを実行できるボタンです。データベースを操作するため、時間がかかる場合があります。そのため、中央に がある暗い不透明UIViewでUIActivityIndicator、ユーザーにしばらく待つように指示し、問題を引き起こす可能性のある他のタップ操作を防ぐ必要があります。viewAただし、画面全体をカバーするには、暗いビューを配置する必要があります。これが私が試した(そして成功した)ものですが、もっと簡単な方法があるかどうか知りたいです。
viewAからviewDのアクセスviewD.superview.superview.superview。ただし、階層が変更されると、このチェーンが変更される可能性が高いため、あまり柔軟ではありません。委任を使用します。
viewD.delegate = viewA. ただし、viewDはviewC(その直接のスーパービュー) によって作成されviewB、 によって作成され、 によって作成されviewAます。したがって、viewD、viewC、およびviewBが@propertyそれぞれのスーパークラスでviewA.viewB.viewC.viewDはない場合 ( by によるアクセスが不可能)、viewAへのポインターを持つことができずviewD、委任が不可能になります (私が理解している限り)。を使用し
NSNotificationます。通知を投稿viewDし、オブザーバーにします。しかし、放送に使われますよね?そのため、やや不適切です。@"ActivityIndicatorShouldBePutOn"viewANSNotificationこの場合 (ダーク マスクが画面全体に配置されている場合) に限り、関連する何かを使用し
UIApplicationて画面にアクセスし、直接その上に配置できます。しかし、別の目的で画面の一部にのみ配置したい場合、これは機能しません。
ですから、もっと良い方法はないか、または上記の方法が標準的な方法であるかどうかを尋ねたいと思います。
