2015-05-22 4 views
0

Я пытаюсь добавить 2 segments в array, а затем прокручивать его подзоны. Вот мой код:Добавить сегменты из UISegmentedControl в NSArray

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 statement в NSLog, я не получаю никакого вывода. Что я могу сделать, чтобы исправить это ?:

+1

Каково значение '[self.segment.subviews objectAtIndex: 0]' и '[self.dataSegmentedControl.subviews objectAtIndex: 1]'? Может быть, это не 'UILabel'? @Jessica – Chaikitty

+0

Я думаю, что их subviews – Jessica

+0

Следующие работы: 'for (UIView * v in [[[subviews] objectAtIndex: 0] subviews])' Но мне нужно сделать это всего на 2 сегментах. – Jessica

ответ

0

Есть только две возможные причины того, что вы видите:

  1. Ни один из элементов массива не является UILabel
  2. Там нет элементов в массиве. Это может быть связано с тем, что [self.segment.subviews objectAtIndex:0] возвращает ноль, что означает только то, что self.segment - это нуль.

Попробуйте исследовать иерархию представлений, прежде чем принимать что-либо. Поэтому распечатайте сегменты и их подпрограммы, чтобы узнать иерархию.

Однако, если вы хотите изменить размер шрифта для некоторых сегментов, но не для других, я бы рекомендовал не идти этим путем и не вмешиваться во внутреннюю структуру. Если это сработает, вы должны ожидать проблемы с любым предстоящим обновлением системы. Я предлагаю вам искать другие сторонние компоненты или создавать свои собственные.