Ios 将UISegmentedControl中的段添加到NSArray
我试图向一个数组中添加两个段,然后在其子视图中循环。这是我的密码:Ios 将UISegmentedControl中的段添加到NSArray,ios,objective-c,nsarray,uisegmentedcontrol,for-in-loop,Ios,Objective C,Nsarray,Uisegmentedcontrol,For In Loop,我试图向一个数组中添加两个段,然后在其子视图中循环。这是我的密码: NSArray *myArray = [[NSArray alloc] initWithObjects:[self.segment.subviews objectAtIndex:0], [self.dataSegmentedControl.subviews objectAtIndex:1], nil]; for (id innerView in myArr
NSArray *myArray = [[NSArray alloc] initWithObjects:[self.segment.subviews objectAtIndex:0],
[self.dataSegmentedControl.subviews objectAtIndex:1], nil];
for (id innerView in myArray) // I tried "myArray.subviews" but it didn't let me do ".subviews"
{
if ([innerView isKindOfClass:[UILabel class]]) {
...
}
}
在if语句中插入NSLog时,不会得到任何输出。我能做些什么来解决这个问题呢?:对于您看到的问题,只有两个可能的原因: 数组的元素都不是UILabel 数组中没有元素。这可能是因为[self.segment.subviews objectAtIndex:0]返回nil,这只意味着self.segment为nil。 在进行任何假设之前,请尝试探索视图层次结构。因此,打印出线段及其子视图以了解层次结构
但是,如果您想更改某些段的字体大小,但不想更改其他段的字体大小,我建议不要这样做,以免弄乱内部结构。如果成功了,您应该预料到任何即将进行的系统更新都会出现问题。我建议您搜索其他第三方组件或构建自己的组件。[self.segment.subviews objectAtIndex:0]和[self.dataSegmentedControl.subviews objectAtIndex:1]的值是多少?也许两者都不是一个标签@Jessica我认为他们的子视图是以下作品:对于UIView*v,在[[[segment Subview]对象索引:0]子视图中]但是我只需要在两个部分上完成它。你想完成什么?请记住,试图挖掘标准控件的私有子视图结构只会在每次iOS更新和结构更改时导致错误和崩溃。如果控件没有通过提供的API提供所需的自定义,那么正确的解决方案是编写或查找一个满足您需要的自定义控件。