0

我有一个名为“Fraction”的自定义类及其方法“display”,我想在 View a UILabel 上显示它:

-(void)display{
    UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 50, 200, 40)];
    [myLabel setBackgroundColor:[UIColor clearColor]];
    [myLabel setText:@"______"];
    [self.view addSubview:myLabel];
 }

但我在最后一行收到此错误:

在“分数 *”类型的对象上找不到属性“视图”

我该如何解决?

(iPhone“单一视图”应用程序,Xcode 4.5.2)

4

3 回答 3

4

您正在尝试将子视图添加到不是 UIView 的东西 - 在您的“显示”方法的上下文中,“自我”指的是分数类型的对象。如果 Fraction 没有一个名为 view 的 UIView 属性,并且没有从具有该属性的属性(例如 UIViewController)继承,那么它没有理由识别您在那里尝试执行的操作。正确的方法是在“Fraction”中有一个实例方法,它返回一个带有分数表示的 NSString。使用此返回值来执行视图需要的任何操作,例如将其添加到 UILabel 的文本属性中。

理解正确的 MVC 很重要——在您的示例中,您完全滥用了 MVC 抽象并且让数据对象影响视图。(M 和 V 不应直接交互)。

于 2013-01-06T20:22:57.027 回答
0

在视图控制器.h

分数*分数;

在 view controller.m 添加这个

UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 50, 200, 40)];
    [myLabel setBackgroundColor:[UIColor clearColor]];
    [myLabel setText:[fraction methodForLabelString]];
    [self.view addSubview:myLabel];

尝试这个

于 2013-01-06T23:58:48.917 回答
0

检查“self”是否为 ViewController。addSubView 是 UIView 中的一个方法。

于 2013-01-07T04:03:20.783 回答