Мне нужна небольшая справка о моем коде. Я хочу создать пользовательскую гистограмму. Я все кодировал. Когда я создаю объекты в своем представлении пользовательского класса, он работает как шарм. Однако я хочу сделать его общим. Я хотел бы создать его в ViewController. Я также добавляю представление в раскадровку и меняю имя класса на свое собственное имя класса.Пользовательский класс, скомпилированный перед ViewController
Это не работает, когда я пытаюсь это сделать.
Но когда я пытаюсь создать его в своем классе пользовательского вида, он работает.
@implementation GCBarGraphView
-(id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
barNumber = [array.values count];
//NSLog(@"%@",array.values);
showDifference = NO;
showShadow = NO;
gradientColor = NO;
drawBaseLine = YES;
[self baseClassInit];
}
return self;
}
-(void)baseClassInit {
GCBarGraphRow *first = [[GCBarGraphRow alloc]init];
first.backgroundColor = [UIColor redColor];
first.value = 20;
GCBarGraphRow *second = [[GCBarGraphRow alloc]init];
second.backgroundColor = [UIColor brownColor];
second.value = 40;
GCBarGraphColumn *container = [[GCBarGraphColumn alloc]init];
container.values = @[first,second];
}
У меня есть GCBarGraphColum, который содержит NSArray и элементы массива GCBarGraphRow. Поэтому я должен использовать их в GCBarGraphView, однако, хотя я инициализирую их в ViewController, установив GCBarGraphView в раскадровку, мой пользовательский класс уже был запущен. Но я думаю, это потому, что имеет initwithCoder. Как я могу это исправить? –
Создаете ли вы эти 3 GCBarGraphView в раскадровке или нет? – sha
Нет, я этого не делал. Проблема состоит в том, что GCBarGraphView расширяет UIView и предполагает, что для построения графиков требуется GCBarGraphColumn, который содержит GCBarGraphRow. Однако он не инициализируется, потому что GCBarGraphView скомпилирован перед ViewController. –