我正在尝试向页面添加新的子视图,这样除了自身之外的所有内容都会变灰。但是,我在屏幕的子视图中调用它。为了解决这个问题,我必须做到以下几点:
[self.view.superview.superview.superview.superview addSubview:self.cardDialog.view];
你可以猜测,这是非常糟糕的代码。如何找到正确的父级并正确设置?
答案 0 :(得分:4)
如果视图是视图层次结构的一部分,请使用window
属性。
UIView* topView = self.view.window;
或者,如果您的视图尚未显示在屏幕上,则可以通过您的应用代理间接获取该窗口
UIView* topView = [UIApplication sharedApplication].delegate.window;
否则,如果您的目标不该窗口,您可以向上走视图层次结构,直到找到所需的视图:
UIView* topView = self.view;
while(topView.superview != nil){
topview = topView.superview;
if( /*topview is the one you were looking for*/ ){
break;
}
}
答案 1 :(得分:0)
我曾经发现自己处于这种状况,我放弃了。我决定使用modalView代替交叉解析转换。您不仅可以避免遇到的问题,还可以帮助您保持井井有条。 最近我通过绘制parentVC的快照并将其发送到modalView来改进了这个方法,然后我应用了一个色调。我想,整体效果正是你所寻找的。 p>