2013-11-10 2 views
1

Я думал, что это было довольно прямолинейно, но я не уверен, что я делаю неправильно. Я пытаюсь дать несколько кнопок границу, хотя я продолжаю получать сообщение об ошибке:NSMutableSet of buttons error 'NSMutableSet' не поддерживается классом коллекции. Ожидаемый подкласс NSArray

'NSMutableSet' is not a supported collection class. Expected subclass of NSArray.

Вот мой код в файле .h:

@property (retain, nonatomic) IBOutletCollection(UIButton) NSMutableSet* btn; 

Я связал это к кнопок на моем XIB.

В моем файле .m я поместил это в viewDidLoad:

Спасибо вам, если вы можете помочь.

+5

AFAIK 'IBOutletCollection' может использоваться только с' NSArray' и 'NSMutableArray'. Вы пытались изменить 'btw' соответственно? –

+0

Я попытался перейти на NSArray и NsMutableArray, хотя и с той же ошибкой. –

ответ

0

Я понял, но есть ли более простой способ написать код в файле .m?

Вот код .h файл:

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

В файле .m я сделал это:

for (int i=0; i < [self.btn count]; i++) 
{ 
    [[[self.btn objectAtIndex:i]layer] setBorderWidth:1.0f]; 

    [[[self.btn objectAtIndex:i]layer] setBorderColor:[UIColor blackColor].CGColor ];   
} 

}

Но есть так много скобок: Есть более простой способ написать это ниже? :

[[[self.btn objectAtIndex:i]layer] 
    setBorderColor:[UIColor blackColor].CGColor ]; 
+0

'self.btn [i] .borderColor = UIColor.blackColor.CGColor;' –

+0

@GerdK, вы потеряли доступ к свойству 'layer'. Джерард, поскольку вы делаете две вещи на уровне, вы можете создать локальный для него просто код: 'CALayer * layer = self.btn [i] .layer; layer.borderWidth = 1; layer.borderColor = ...; ' –

+0

Или используйте быстрое перечисление (извините, форматирование теряется в комментариях): \t' для (кнопки UIButton * в BTN) \t { \t \t button.layer.borderWidth = 1.0f ; \t \t button.layer.borderColor = UIColor.blackColor.CGColor; \t} ' –

Смежные вопросы