插入其他类的子视图

时间:2012-01-21 10:19:38

标签: iphone ios xcode ipad

我正在尝试将UIImageView子视图添加到我的viewController.view中,同时考虑它们是在图像的上方还是下方。

基本上,我的viewController有一个body的图像。我允许用户在场景中添加配件,例如帽子。我需要在上面放一些这些图像,一些在体视图索引之下。

然而,我无法弄清楚如何在身体后面添加图像。我想我可以尝试创建一个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];

3 个答案:

答案 0 :(得分:0)

[self.view insertSubview:sprite belowSubview:body]。请勿在{{1​​}}之后插入viewController,因为selfself

答案 1 :(得分:0)

有两件事似乎无法理解。

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

您在这里通过self.viewController.body

访问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视图..你应该释放它。

答案 2 :(得分:0)

解决问题:

愚蠢的问题。我只需要在我的MenuItem类中声明我的ViewController类,而不是使用UIViewController *。

感谢您的帮助。