Добавить содержимое IBOutletCollection в массив?

#objective-c #arrays #iboutletcollection

#objective-c #массивы #iboutletcollection

Вопрос:

У меня есть две коллекции IBOutletCollection, называемые числами и символами. Я хочу добавить содержимое их заголовка в массив таким образом, чтобы первый элемент массива состоял из чисел, а второй — из символов, третий — из чисел, четвертый — из символов и так далее. Есть ли способ это сделать?

Редактировать:

 //@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray symbols; 
//@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *numbers; 

-(void)setNumbers:(NSArray *)numbers 
{ 
  _numbers=numbers; 
  for (UIButton button in self.numbers) 
  { 
     Number * number = [[Number alloc]init]; 
     [button setTitle:[number randnum] forState:UIControlStateNormal];
  } 
} 
 

Это код для задания заголовка номеров коллекций выходов.

Комментарии:

1. какие элементы пользовательского интерфейса у вас есть в коллекциях ib outlet? UILabel s?

2. это строки. Я хочу добавить заголовки UIButtons в массив, а заголовки являются строками.

3. если это коллекция outlet, она должна содержать какие-то элементы пользовательского интерфейса, поэтому я предполагаю, что у вас там есть метки (которые, конечно же, отображают строку …)?! вы спрашиваете алгоритм для достижения этого? может быть, вы могли бы поделиться немного кода (особенно объявление коллекций outlet)? тогда я покажу вам алгоритм.

4. еще один вопрос: numbers symbols содержат ли и одинаковое количество элементов?

5. //@свойство (сильное, неатомное) IBOutletCollection(UIButton) NSArray символы; //@свойство (сильное, неатомное) IBOutletCollection(UIButton) NSArray *числа; -(void)setNumbers:(NSArray *)числа { _numbers=числа; для (кнопка UIButton в self.numbers) { Число *number=[[Number alloc]init]; [button setTitle:[number randnum] forState:UIControlStateNormal]; } } Это код для установки заголовка номеров коллекций выходных данных.

Ответ №1:

Здесь вы идете, предполагая, что ваши IBOutletCollections содержат элементы класса UILabel и имеют одинаковое количество элементов:

 @property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *numbers;
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *symbols;

NSMutableArray *result = [[NSMutableArray alloc] initWithCapacity:self.numbers.count self.symbols.count];
for (int i = 0; i < self.numbers.count self.symbols.count; i  ) {
    if (i%2 == 0) {
        [result addObject:((UIButton *)self.numbers[i]).titleLabel.text];
    }
    else{
        [result addObject:((UIButton *)self.symbols[i]).titleLabel.text];
    }
}
 

Решение вашей проблемы состоит в том, чтобы запустить цикл и в цикле выполнить вычисление по модулю с 2, чтобы выяснить, когда у вас четная или нечетная позиция в результирующем массиве, а затем добавить элемент из соответствующего IBOutletCollection . Это понятно?

Комментарии:

1. [result count] даст 0, поскольку count подсчитывает количество элементов в массиве. не начальная емкость.