从类的方法显示UILabel

时间:2013-01-06 20:17:27

标签: objective-c ios class

我有一个名为“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];
 }

但是我在最后一行收到了这个错误:

  

在'Fraction *'

类型的对象上找不到Proprety'视图'

我该如何解决?

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

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

在视图controller.h中

分数*分数;

在视图controller.m中添加此

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

试试这个

答案 2 :(得分:0)

检查'self'是否是ViewController。 addSubView是UIView中的一个方法。