Как перечислить все подпредставления в контроллере uiview в iOS? - PullRequest
83 голосов
/ 30 августа 2011

Я хочу перечислить все подпредставления в UIViewController. Я пробовал self.view.subviews, но не все подпредставления перечислены, например, подпредставления в UITableViewCell не найдены. Есть идеи?

Ответы [ 22 ]

0 голосов
/ 02 июля 2018
- (NSString *)recusiveDescription:(UIView *)view
{
    NSString *s = @"";
    NSArray *subviews = [view subviews];
    if ([subviews count] == 0) return @"no subviews";

    for (UIView *subView in subviews) {
         s = [NSString stringWithFormat:@"<%@; frame = (%f %f : %f %f) \n ",NSStringFromClass([subView class]), subView.frame.origin.x, subView.frame.origin.y ,subView.frame.size.width, subView.frame.size.height];  
        [self recusiveDescription:subView];
    }
    return s;
}
0 голосов
/ 04 июня 2015

В качестве альтернативы, если вы хотите вернуть массив всех подпредставлений (и вложенных подпредставлений) из расширения UIView:

func getAllSubviewsRecursively() -> [AnyObject] {
    var allSubviews: [AnyObject] = []

    for subview in self.subviews {
        if let subview = subview as? UIView {
            allSubviews.append(subview)
            allSubviews = allSubviews + subview.getAllSubviewsRecursively()
        }
    }

    return allSubviews
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...