#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 подсчитывает количество элементов в массиве. не начальная емкость.