Так что я немного запутался при передаче NSString в класс. У меня есть класс легенды, который рисует маленькую коробку и имеет метку, что это за коробка. Моя коробка по сути является объектом UIView, в котором я меняю цвет фона. В моем методе инициализации я инициализирую поле, а затем в другом своем классе, где я создаю экземпляр этого класса, я устанавливаю цвет фона. Однако в случае NSString я не знаю, как выделить/инициализировать и установить его текст из другого класса. Вот мой код для легенды.
- (id)sharedInit {
self.backgroundColor = [UIColor clearColor];
self.LegendBox = [[UIView alloc] initWithFrame:CGRectMake(0, self.frame.size.height / 2 - LEGEND_SIZE / 2, LEGEND_SIZE, LEGEND_SIZE)]; // hugs LHS, centered vertically
self.LegendLabel = [[NSString alloc] init];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(25, 0, self.bounds.size.width - 25, self.bounds.size.height)];
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor clearColor];
label.text = self.LegendLabel;
label.font = [UIFont fontWithName:@"Arial" size:14.0];
label.numberOfLines = 5;
label.lineBreakMode = UILineBreakModeWordWrap;
[self addSubview:label];
[self addSubview:_legendBox];
return self;
}
Затем, когда я пытаюсь создать экземпляр класса легенды в моем другом классе:
PieChartLabelView *labelView1 = [[PieChartLabelView alloc] initWithFrame:CGRectMake(0, 0, 140, 80)];
labelView1.LegendBox.backgroundColor = BLUE_COLOR;
NSString *str1 = [[NSString alloc] initWithFormat:@"as;flkasjdf;laksjdf"];
labelView1.LegendLabel = str1;
[self addSubview:labelView1];
[str1 release];
[labelView1 release];
Я не получаю текст для своей метки.
Второй вопрос, который у меня есть, пытаясь лучше понять себя/ивары/сеттеры/геттеры, находится в моем классе легенд, почему я могу просто использовать
[self addSubview:_legendLabel];
против self.LegendLabel? Я до сих пор не понимаю этого до конца. Спасибо.