Добавить сегменты из UISegmentedControl в NSArray

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

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]]) {
        ...
    }
}

Когда я вставляю NSLog в if statement, я ничего не получаю. Что я могу сделать, чтобы это исправить ?:


person Jessica    schedule 22.05.2015    source источник
comment
Какое значение имеют [self.segment.subviews objectAtIndex:0] и [self.dataSegmentedControl.subviews objectAtIndex:1]? Может, ни UILabel? @Джессика   -  person Chaikitty    schedule 22.05.2015
comment
Я думаю, что их мнения   -  person Jessica    schedule 22.05.2015
comment
Работает следующее: for (UIView *v in [[[segment subviews] objectAtIndex:0] subviews]) Но мне нужно сделать это только на 2 сегментах.   -  person Jessica    schedule 22.05.2015
comment
Что вы пытаетесь достичь?   -  person Duncan C    schedule 22.05.2015
comment
Пытаюсь изменить размер шрифта на 2 сегмента.   -  person Jessica    schedule 22.05.2015
comment
Имейте в виду, что попытка проникнуть в частную структуру подпредставления стандартного элемента управления приведет только к ошибкам и сбоям при каждом обновлении iOS и изменении структуры. Если элемент управления не обеспечивает необходимую настройку с помощью предоставленного API, правильным решением будет написать или найти настраиваемый элемент управления, который выполняет то, что вам нужно.   -  person rmaddy    schedule 22.05.2015
comment
Кстати - это похоже на дубликат ваш предыдущий вопрос.   -  person rmaddy    schedule 22.05.2015
comment
Я не был уверен, следует ли мне отредактировать этот вопрос или добавить новый вопрос. Причина, по которой возник новый вопрос, заключалась в том, что я подумал, поскольку это уже совсем другая тема (добавление сегментов в массив), я подумал, что было бы лучше создать новый вопрос.   -  person Jessica    schedule 22.05.2015
comment
Так ты говоришь, что мне даже не следует делать то, что говорится в этом ответе? stackoverflow.com/questions/30364868/   -  person Jessica    schedule 22.05.2015


Ответы (1)


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

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

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

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

person Mohannad A. Hassan    schedule 22.05.2015