如何知道视图层次结构中是不是显示 UIActionSheet?

Posted

技术标签:

【中文标题】如何知道视图层次结构中是不是显示 UIActionSheet?【英文标题】:How to know if there is a UIActionSheet showing in view Hierarchy?如何知道视图层次结构中是否显示 UIActionSheet? 【发布时间】:2013-01-15 10:34:37 【问题描述】:

如何知道View Hierarchy 中是否显示UIActionSheet? 我也想参考那个UIActionSheet,有什么好主意吗?

【问题讨论】:

为操作表使用标签并实现委托。 可能重复:***.com/questions/4363317/…,看看第二个答案 @RoxDorentus 我不认为它完全重复,但它确实解决了我的问题,谢谢。 【参考方案1】:

请注意,在 ios6 上,您需要递归搜索才能找到 UIActionSheet,它现在不是 UIWindow 的直接子视图。

static UIView *actionSheet = nil;
-(void)findActionSheetInSubviewsOfView:(id)view

    if (actionSheet) 
        return;
    
    if ([[view valueForKey:@"subviews"] count] != 0) 
        for (id subview in [view valueForKey:@"subviews"]) 
            if ([subview isKindOfClass:[UIActionSheet class]]) 
                actionSheet = subview;
            
            else
                [self findActionSheetInSubviewsOfView:subview];
        
    


-(UIActionSheet*) actionSheetShowing 
    actionSheet = nil;
    for (UIWindow* window in [UIApplication sharedApplication].windows) 
        [self findActionSheetInSubviewsOfView:window];
    

    if (actionSheet) 
        return (UIActionSheet*)actionSheet;
    
    return nil;

【讨论】:

以上是关于如何知道视图层次结构中是不是显示 UIActionSheet?的主要内容,如果未能解决你的问题,请参考以下文章

尝试显示其视图不在窗口层次结构警报中

如何以模态方式将视图添加到不在视图层次结构中的另一个视图 iOS

警告:尝试显示不在窗口层次结构中的视图!使用已识别的 segue 时

如何在 Xcode 视图层次结构中拥有深度视图?

如何实现 D3 层次视图

如何在 iOS 中使用 UIView 动画显示 UIView,如 UIAction 表?