无法设置UIView子类的属性

时间:2014-12-19 10:20:14

标签: objective-c

今天我有一个非常简单的问题,但是我作为Newby,我有一些问题要解决我的问题。谷歌不会帮助我。

我是我的ViewController,我有第二个类“Messestand” 在ViewController上我有一个用户输入一些浮动数据的界面。

此数据我将转移到Messestand-Class,其中放置了一个网格

这是我的代码:

@interface Messestand : UIView {

}
float faktor;
@property (assign, nonatomic) float breite;
@property (assign, nonatomic) float laenge;
@end

Messestand.h

这是我的ViewController的代码:

-(IBAction)transfer:(id)sender {
    NSString *varlaenge = eingabelaenge.text;
    NSString *varbreite = eingabebreite.text;
    Messestand.laenge.value = [varlaenge floatValue];
    Messestand.breite.value = [varbreite floatValue];
    ausgabebreite.text = [NSString stringWithFormat:@"%.1f",varbreite];
    ausgabelaenge.text = [NSString stringWithFormat:@"%.1f",varlaenge];
    [self.view endEditing:YES];
    [self.view addSubview:GrundrasterView];
}

DatenuebertragungViewController.m

编译器输出的错误在线:     Messestand.laenge.value = [varlaenge floatValue];     Messestand.breite.value = [varbreite floatValue];

我的问题是,输入Messestand-Class Instanzes(Laenge,breite)的用户界面输入数字的正确语法是什么

2 个答案:

答案 0 :(得分:2)

看起来你实际上没有实例化Messestand对象。您尝试为该类指定值。 (或者你将变量命名为非常错误)

无论如何,而不是

Messestand.laenge.value = [varlaenge floatValue];
Messestand.breite.value = [varbreite floatValue];

你想这样做:

Messestand *messestand = [[Messestand alloc] init];
messestand.laenge = [varlaenge floatValue];
messestand.breite = [varbreite floatValue];

答案 1 :(得分:0)

好的,这是解决方案代码:

NSString *varlaenge = eingabelaenge.text;
NSString *varbreite = eingabebreite.text;
Messestand *messestand = [[Messestand alloc] init];
messestand.laenge = [varlaenge floatValue];
messestand.breite = [varbreite floatValue];
ausgabelaenge.text = [NSString stringWithFormat:@"%.1f",messestand.laenge];
ausgabebreite.text = [NSString stringWithFormat:@"%.1f",messestand.breite];
NSLog(@"%@, %@",varlaenge ,varbreite);
NSLog(@"%f, %f",messestand.laenge ,messestand.breite);
[self.view endEditing:YES];
[self.view addSubview:GrundrasterView];

但是现在出现了一个新问题: 当我添加View(GrundrasterView,类是Messestand)时,(laenge& breite)是(null):(

目标是用户输入长度和重量并在下一个View(GrundrasterView)中将其放置在视图上的网格

-(void)drawRect:(CGRect)rect {
int x1;
faktor = 450 / breite;
x1 = faktor * laenge;
if (x1 > 300) {
    faktor = 300/laenge;
}
NSLog(@"faktor: %f", faktor);
NSLog(@"Länge: %@", laenge);
NSLog(@"Breite: %@", breite);

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 1.0);
CGContextSetStrokeColorWithColor(context, [UIColor grayColor].CGColor);
CGContextSetLineWidth(context, 2.0);
CGRect rectangel = CGRectMake(10, 10, breite*faktor, laenge*faktor);
CGContextAddRect(context, rectangel);
CGContextStrokePath(context);
CGContextSetLineWidth(context, 1.0);
for (int i = 1; i < breite; i++) {
    CGContextMoveToPoint(context, (i*faktor)+10, 10);
    CGContextAddLineToPoint(context, (i*faktor)+10, laenge*faktor+10);
    CGContextStrokePath(context);
}
for (int i = 1; i < laenge; i++) {
    CGContextMoveToPoint(context, 10, (i*faktor)+10);
    CGContextAddLineToPoint(context, breite*faktor+10, (i*faktor)+10);
    CGContextStrokePath(context);
}
}
-(void)dealloc {
    [super dealloc];
}
@end

或者当我将所有代码放在ViewController .m?

中时,它是否更好