Tengo una vista secundaria aleatoria en una jerarquía de vista. ¿Cuál es la mejor/más rápida/forma inteligente de llegar a la supervista raíz?UIView. ¿Cómo encuentro la raíz de SuperView rápido?
Saludos,
Doug
Tengo una vista secundaria aleatoria en una jerarquía de vista. ¿Cuál es la mejor/más rápida/forma inteligente de llegar a la supervista raíz?UIView. ¿Cómo encuentro la raíz de SuperView rápido?
Saludos,
Doug
Si su aplicación sólo tiene una UIWindow
(generalmente cierto), y aunque sólo sea vista secundaria de la ventana es la opinión de su controlador root (también suele ser cierto):
[randomChildView.window.subviews objectAtIndex:0]
O puede salir de la jerarquía de forma recursiva, marcando view.superview
hasta que encuentre una vista cuya supervista es nil
.
Es una cantidad insignificante de tiempo de procesador para ir directamente a la jerarquía de Superview. Tengo esto en mi categoría UIView.
- (UIView *)rootView {
UIView *view = self;
while (view.superview != Nil) {
view = view.superview;
}
return view;
}
swift3/4:
func rootSuperView() -> UIView
{
var view = self
while let s = view.superview {
view = s
}
return view
}
me gusta. Aclamaciones. – dugla
Es posible que desee comprobar que alguna vez encuentre que una "supervista es nula", lo intenté y me quedé atrapado en un ciclo infinito. – finneycanhelp
La alternativa de escalar solo toma unos pocos ciclos de procesador insignificantes, y no necesita asumir nada. No entiendo un ciclo infinito. – TJez