Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Xcode中迭代self.superview?_Ios_Objective C_Uiview - Fatal编程技术网

Ios 如何在Xcode中迭代self.superview?

Ios 如何在Xcode中迭代self.superview?,ios,objective-c,uiview,Ios,Objective C,Uiview,我有一个从UIView继承的类,名为LabelView。在故事板中,有一个从LabelView拖动和继承的视图。现在我想遍历self.superview来设置每个视图的属性文本。请建议这样做的方法。 这是我的密码: int i=0; for (UIView *view in labelView) { if ([view isMemberOfClass:[LabelView class]]) { [view setTag:i];

我有一个从UIView继承的类,名为LabelView。在故事板中,有一个从LabelView拖动和继承的视图。现在我想遍历self.superview来设置每个视图的属性文本。请建议这样做的方法。 这是我的密码:

int i=0;
    for (UIView *view in labelView) {
        if ([view isMemberOfClass:[LabelView class]]) {
            [view setTag:i];
            NSArray *symbols = @[@"+", @"-", @"*", @"/"];
            NSString* symb = [NSString stringWithFormat:@"%@", [symbols objectAtIndex:i]];
            UIFont *labelFont = [UIFont systemFontOfSize:view.bounds.size.width*0.80];
            NSAttributedString *labelOperator=[[NSAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@", symb]attributes:@{NSFontAttributeName: labelFont}];
            CGRect textrect;
            textrect.origin=CGPointMake(12, 0);
            textrect.size=[labelOperator size];
            [labelOperator drawInRect:textrect];
            i++;
        }
        else{
            NSLog(@"fail");
        }

}

您可能想尝试以下方法:

for (UIView *view in self.view.subviews) {
        if ([view isMemberOfClass:[LabelView class]]) {
//DO WHATEVER YOU WANT
}

上面的快速枚举代码遍历
self.view
中的所有子视图,并检查该视图是否是自定义类
LabelView
的成员。如果找到一个,则执行
If
条件中的语句。希望有帮助

关键是从标签视图转到superview,并迭代其子视图

for (UIView *label in labelView.superview.subviews) {
   if ([label isKindOfClass:[LabelView class]]) {
       // configure the label
   }
}

self.view不起作用,因为我没有名为“view”的属性。每次我尝试self.superview或self.subview时,我都会得到一个线程1:SIGABRT错误;基本上,我如何遍历我的视图superview?你在哪里执行你写的上述代码?如果你的“self”是UIView的子类,那么你应该执行self.subview;如果它是UIViewController的子类,那么你必须访问view controller的view属性,然后访问self.view.subview这样的子视图。