2012-01-21 6 views
0

私は、画像の上または下に移動するかどうかを考慮して、UIImageViewサブビューをviewController.viewに追加しようとしています。他のクラスのサブビューを挿入する

基本的に、私のviewControllerはボディのイメージを持っています。私は、ユーザーが帽子のようなシーンにアクセサリーを追加することを許可します。私はこれらの画像のいくつかを上記のボディビューインデックスの下に置く必要があります。

しかし、私は身体の背後に画像を追加する方法を考え出すのに問題があります。にもかかわらず、私は@property、私は警告"Property body not found on object of type 'UIViewController *'"を得るよう

//this is from my menuItem class which has a UIViewController property connecting it to the main scene 
[self.viewController.view insertSubview:sprite belowSubview:self.viewController.body]; 

しかしこのコードは、動作しません:私は、私がしようとするのViewController上の基準点としてUIImageViewプロパティを作成し、このような何かを行うことができます考え出しそれを合成する。

誰かが私が間違っていることを知っているのですか、これを実装する方法についてより良い設計をしていますか?おかげ

@shubhank:

//.h 
@interface ViewController : UIViewController { 
    UIImageView *body; 
} 
@property (nonatomic, retain) UIImageView *body; 

//.m (in viewDidLoad) 
self.body = [[UImageView alloc] initWithFrame:CGRectMake(250, 300, 339, 562)]; 
    self.body.image = [UIImage imageNamed:@"body.png"]; 
    [self.view addSubview:body]; 
+0

あなたの質問に – Shubhank

+0

が追加されました、あなたのプロジェクトのインターフェースセクションに定義されているボディのコードを追加してください。 – user339946

答えて

0

問題:

愚かな問題。私は単にUIViewController *を使用するのではなく、私のMenuContemクラスで私のViewControllerクラスを宣言する必要がありました。

ありがとうございました。

0

[self.view insertSubview:sprite belowSubview:body]selfの後にを挿入しないでください。原因はselfです。viewControllerです。

+0

こんにちは、私はプロパティと合成を言及しました。それで足りないの? [at]プロパティ(非構造体、保持)UIImageView * body; – user339946

+0

ああ、私の悪い - [self.view insertSubview:sprite belowSubview:body]。 selfの後にviewControllerを挿入しないでください。 –

+0

こんにちは、私はこのクラスからはできません。スクロールビューで囲まれたMenuItemクラス(UIImageViewサブクラス)からイメージをインスタンス化しています。 [self.viewController.view addSubview:sprite]を使用してviewControllerに表示させることができます。これは、ボディの下に追加する方法を考え出すだけです。 – user339946

0

私は理解できないような2つのことが起こっています。ここで

[self.viewController.view insertSubview:sprite belowSubview:self.viewController.body] 

あなたはself.viewController.body

により体内にアクセスして、その後、体が

[self.view addSubview:body] 

はそうビューコントローラによって、それの両方にアクセスすることができます来てどのように定義されている場合self.view。プロパティはUIImageを保持

self.body = [[[UIImageView alloc] initWithFrame:CGRectMake(250, 300, 339, 562)]autorelease]; 

から

間違って何かがここにあります..です

また

self.body = [[UIImageView alloc] initWithFrame:CGRectMake(250, 300, 339, 562)]; 

変更、それをview..youは、それを解放する必要があります。解決

+0

変数にはviewControllerが定義されていますか? – Shubhank

+0

返信いただきありがとうございます。私は、私のviewControllerクラスでボディをインスタンス化しています。しかし、私はスプライトをインスタンス化しています、別のクラス "MenuItem"。 MenuItemはimageViewサブクラスです。ユーザが画面上のmenuItemに触れると、viewController.viewにグラフィック(つまりハット)をインスタンス化します。 *編集:はい、menuItemには、menuItemを作成するときにviewController(menuItem.viewController = self)で定義されるviewControllerというプロパティがあります。 – user339946

+1

メニュー項目からメインビューにコードを追加するのは悪い習慣です...スプライトをメニュー項目クラスのプロパティとして保存し、インスタンスメソッドとして利用できるようにします。メインビューでスプライトを使用してメインクラスのビューに追加してください – Shubhank

関連する問題