我有一个名为“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)
答案 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中的一个方法。