美文网首页
iOS获取一个view对应的子view

iOS获取一个view对应的子view

作者: Invisible_He | 来源:发表于2019-12-26 11:03 被阅读0次

    很多时候,我们会遇到这样的一种场景,在一个view的一堆subviews里面找到我们想要的那个view,尤其是要在一个不是我们自己写的view的subviews中找到那个想要的view, 这种场景下,能获取到这个view就显得至关的有用了。譬如,我们要自定义tableview左滑删除的样式时,尤其是自定义成一个特定的图标或者更复杂的情况,具体看下面截图:

    image

    在这种情况下,我们就需要获取到这个tableview下的UISwipeActionStandardButton,在它上面添加一个自定义的imageview来显示图标。

    其实方法也是很简单的,就是通过简单的递归遍历来实现就行了,具体如下:

    //如果找到了就返回找到的view,没找到的话,就返回nil
    + (UIView *)getSubViewWithClassName:(NSString *)className inView:(UIView *)inView {
        //判空处理
        if( !inView  ||  !inView.subviews.count ||  !className.length) return nil;
        //最终找到的view,找不到的话,就直接返回一个nil
        UIView *foundView = nil;
        //循环递归进行查找
        for(UIView *view in inView.subviews) {
            //如果view是当前要查找的view,就直接赋值并终止循环递归,最终返回
            if([view isKindOfClass:NSClassFromString(className)]) {
                foundView = view;
                break;
            }
            //如果当前view不是要查找的view的话,就在递归查找当前view的subviews
            foundView = [self getSubViewWithClassName:className inView:view];
            //如果找到了,则终止循环递归,最终返回
            if (foundView) break;
        }
        return foundView;
    
    }
    

    相关文章

      网友评论

          本文标题:iOS获取一个view对应的子view

          本文链接:https://www.haomeiwen.com/subject/grekoctx.html