IBOutletCollection и инициализация пользовательского экземпляра класса
Я использую класс MHRotaryKnob и не могу настроить его так, чтобы у нескольких розеток были одинаковые настройки по умолчанию. Нетрудно заставить его работать с одним экземпляром, используя IBOutlet, но теперь он ищет свойства класса MHRotaryKnob в NSArray.
Как точно определить rotaryKnob в реализации, чтобы настройки передавались всем элементам управления, подключенным к IBOutletCollection? Свойства в реализации определены в MHRotaryKnob.m, но теперь компилятор ищет его в NSArray.
ViewController.h
#import <UIKit/UIKit.h>
#import "MHRotaryKnob.h"
@interface CBViewController : UIViewController
@property (nonatomic, retain) IBOutletCollection (MHRotaryKnob) NSArray *rotaryKnob;
ViewController.m
#import "ViewController.h"
#import "MHRotaryKnob.h"
@implementation CBViewController;
@synthesize rotaryKnob;
- (void)viewDidLoad
{
[super viewDidLoad];
rotaryKnob.interactionStyle = MHRotaryKnobInteractionStyleSliderVertical;
rotaryKnob.scalingFactor = 1.5f;
rotaryKnob.defaultValue = rotaryKnob.value;
rotaryKnob.resetsToDefault = YES;
rotaryKnob.backgroundColor = [UIColor whiteColor];
rotaryKnob.backgroundImage = [UIImage imageNamed:@"knob_passive.png"];
[rotaryKnob setKnobImage:[UIImage imageNamed:@"knob_passive.png"] forState:UIControlStateNormal];
[rotaryKnob setKnobImage:[UIImage imageNamed:@"knob_highlighted.png"] forState:UIControlStateHighlighted];
[rotaryKnob setKnobImage:[UIImage imageNamed:@"Knob Disabled.png"] forState:UIControlStateDisabled];
rotaryKnob.knobImageCenter = CGPointMake(35.0f, 32.0f);
[rotaryKnob addTarget:self action:@selector(rotaryKnobDidChange) forControlEvents:UIControlEventValueChanged];
1 ответ
Решение
IBOutletCollection
это коллекция, следовательно, почему она поддерживается NSArray
в этом случае.
Так что это может помочь переименовать ивар в rotaryKnobs
чтобы прояснить этот факт, а затем использовать его следующим образом
for (MHRotaryKnob *rotaryKnob in self.rotaryKnobs) {
rotaryKnob.interactionStyle = MHRotaryKnobInteractionStyleSliderVertical;
rotaryKnob.scalingFactor = 1.5f;
rotaryKnob.defaultValue = rotaryKnob.value;
rotaryKnob.resetsToDefault = YES;
rotaryKnob.backgroundColor = [UIColor whiteColor];
rotaryKnob.backgroundImage = [UIImage imageNamed:@"knob_passive.png"];
rotaryKnob.knobImageCenter = CGPointMake(35.0f, 32.0f);
[rotaryKnob setKnobImage:[UIImage imageNamed:@"knob_passive.png"] forState:UIControlStateNormal];
[rotaryKnob setKnobImage:[UIImage imageNamed:@"knob_highlighted.png"] forState:UIControlStateHighlighted];
[rotaryKnob setKnobImage:[UIImage imageNamed:@"Knob Disabled.png"] forState:UIControlStateDisabled];
[rotaryKnob addTarget:self action:@selector(rotaryKnobDidChange) forControlEvents:UIControlEventValueChanged];
}