我有四个UIViews:viewA是根视图,它有viewB它的子视图。viewBhasviewC作为其子视图,并且viewChasviewD作为其子视图。所以有四个视图的层次结构。viewD基本上是一个可以点击做某事的按钮。由于该操作与数据库有关,因此可能需要一段时间。UIView所以我想要一个中间有a的深色不透明UIActivityIndicator来告诉用户等待片刻并防止其他可能导致麻烦的点击动作。但是,必须放入暗视图viewA以使其覆盖整个屏幕。这是我尝试(并成功)的方法,但我想知道是否有更简单的方法可以做到这一点。
viewA从访问。viewD_viewD.superview.superview.superview但是它不是很灵活,因为一旦层次结构发生变化,这条链很可能会发生变化。使用委托。
viewD.delegate = viewA. 但是,viewD由viewC(其直接超级视图)创建,由 创建viewB,由 创建viewA。因此,如果viewD、viewC和viewB不@property属于其各自的超类(无法访问viewA.viewB.viewC.viewD),则viewA不能有指向 的指针viewD,这将使委托变得不可能(据我所知)。使用
NSNotification.viewD发布@"ActivityIndicatorShouldBePutOn"通知并viewA对其进行观察。但是,NSNotification是用来广播的吧?所以有点不合适。只要这种情况下(黑色蒙版放在整个屏幕上),我就可以使用相关的东西
UIApplication来访问屏幕并将其直接放在它上面。但是,如果我只想将它放在屏幕的一部分上以用于不同的目的,那么这是行不通的。
所以我想问一下是否有更好的方法,或者上面提到的一种方法是否是标准方法。
