2012-01-21 85 views
0

我試圖將UIImageView子視圖添加到我的viewController.view,考慮它們是否在圖像上方或下方。從其他類插入子視圖

基本上,我的viewController有一個正文的圖像。我允許用戶在場景中添加配件,例如帽子。我需要在上面放置一些這些圖像,一些放在身體視圖索引的下面。

但是我很難弄清楚如何在身體後面添加圖像。我想我可以嘗試,並創建一個UIImageView財產上的viewController一個參考點,做這樣的事情:

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

但是這個代碼不工作,因爲我得到警告"Property body not found on object of type 'UIViewController *'",即使我@Property和@synthesize它。

有誰知道我做錯了什麼,或者有更好的設計來實現這個?由於

@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

問題就迎刃而解了:

傻問題。我只需要在我的MenuItem類中轉發聲明我的ViewController類,而不是使用UIViewController *。

感謝您的幫助。

0

[self.view insertSubview:sprite belowSubview:body]。請勿在self之後插入viewController,因爲selfviewController

+0

嗨,我提到我的財產和綜合它。這還不夠嗎? [at]屬性(nonatomic,retain)UIImageView * body; – user339946

+0

哦,我的不好 - [self.view insertSubview:sprite belowSubview:body]。不要在自己後面插入viewController,因爲self is viewController。 –

+0

嗨,我不能從這個班上做到這一點。我正在從我的MenuItem類(UIImageView子類)實例化圖像,它們位於滾動視圖中。我可以通過[self.viewController.view addSubview:sprite]使它出現在viewController中,現在只需要弄清楚如何將它添加到body下。 – user339946

0

有兩件事情發生,我似乎無法理解。

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

在這裏,您是通過self.viewController.body

訪問的身體,然後在那裏的身體被定義

[self.view addSubview:body] 

所以怎麼來的,你可以通過視圖控制器訪問它都和self.view。

有錯誤的東西在這裏..

而且

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

改變它

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

屬性保留的UIImage view..you應該釋放它。

+0

你有一個變量定義的viewController嗎? – Shubhank

+0

感謝您的回覆。我在我的viewController類中實例化身體。然而,我在一個名爲「MenuItem」的單獨類中實例化了精靈。 MenuItem是一個imageView子類。當用戶觸摸屏幕上的菜單項時,它將圖形(即帽子)實例化到viewController.view上。 *編輯:是的,當我創建menuItems時,menuItem有一個名爲viewController的屬性,它由viewController(menuItem.viewController = self)定義。 – user339946

+1

從菜單項向主視圖添加代碼是一種不好的做法......你應該做的是將sprite保存爲菜單項類中的一個屬性......將其作爲實例方法提供...在主視圖中獲取sprite使用Menuitem實例..然後將它添加到主類中的視圖 – Shubhank