简体   繁体   English

无法设置UIView子类的属性

[英]Can't set property of UIView subclass

today i've a very simple Question for you but me as Newby i've some problems to solve my problem. 今天,我对您有一个非常简单的问题,但作为纽比,我有一些问题需要解决。 And Google won't help me. Google不会帮我。

I've my ViewController and i've a second Class "Messestand" at the ViewController i've a interface where the user enters some float data. 我有ViewController,并且在ViewController上还有第二个“ Messestand”类,我有一个界面,用户可以在其中输入一些浮动数据。

This data i will transfer to the Messestand-Class where its placed a grid 我将这些数据传输到Messestand-Class,并将其放置在网格中

here is my code: 这是我的代码:

@interface Messestand : UIView {

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

Messestand.h 展览馆

This its the Code of my ViewController: 这是我的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 DatenuebertragungViewController.m

The error output from the compiler its at line: Messestand.laenge.value = [varlaenge floatValue]; 编译器的错误输出如下:Messestand.laenge.value = [varlaenge floatValue]; Messestand.breite.value = [varbreite floatValue]; Messestand.breite.value = [varbreite floatValue];

My question ist, what is the correct syntax to ad the numbers of the user interface input to the Messestand-Class Instanzes (Laenge, breite) 我的问题专家是,向Messestand-Class Instanzes(Laenge,breite)输入用户界面编号的正确语法是什么?

It looks like you did not actually instantiate a Messestand object. 看起来您实际上没有实例化Messestand对象。 You try to assign values to the class. 您尝试将值分配给该类。 (Or you are naming your variables very wrong) (或者您将变量命名非常错误)

Anyway, instead of 无论如何,不​​是

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

You want to do this: 您想这样做:

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

ok, here its the solution code: 好的,这里是解决方案代码:

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];

But now a new Problem: When i add the View (GrundrasterView, class is Messestand) the (laenge & breite) is (null) :( 但是现在是一个新的问题:当我添加视图(GrundrasterView,类是Messestand)时(laenge&breite)是(null):(

the goal is the user enters the length and weight and in the next View (GrundrasterView) its placed a grid on the 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

Or ist is it better when i placed all the Code in the ViewController .m ? 或者,当我将所有代码放在ViewController .m中时,ist会更好吗?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM