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

しかし、最後の行で次のエラーが発生します。

タイプ「Fraction *」のオブジェクトにプロパティ「view」が見つかりません

どうすれば解決できますか?

(iPhone「シングルビュー」アプリケーション、Xcode 4.5.2)

4

3 に答える 3

4

UIView ではないものにサブビューを追加しようとしています。'display' メソッドのコンテキストでは、'self' は Fraction タイプのオブジェクトを参照しています。Fraction に view と呼ばれる UIView プロパティがなく、そのプロパティ (UIViewController など) を継承していない場合、そこで何をしようとしているのかを認識する理由はありません。これを行う正しい方法は、分数の表現で NSString を返すインスタンス メソッドを "Fraction" に持つことです。この戻り値を使用して、UILabel の text プロパティに追加するなど、ビューが必要とするすべてのことを行います。

正しい MVC を理解することが重要です。あなたの例では、MVC の抽象化を完全に悪用しており、データ オブジェクトがビューに影響を与えています。(M と V は直接相互作用するべきではありません)。

于 2013-01-06T20:22:57.027 に答える
0

ビューで controller.h

Fraction* 分数;

ビュー 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 に答える