Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 从其他类插入子视图_Iphone_Ios_Xcode_Ipad - Fatal编程技术网

Iphone 从其他类插入子视图

Iphone 从其他类插入子视图,iphone,ios,xcode,ipad,Iphone,Ios,Xcode,Ipad,我正在尝试将UIImageView子视图添加到我的viewController.view中,并考虑它们是位于图像上方还是下方 基本上,我的viewController有一个身体的图像。我允许用户向场景添加附件,例如帽子。我需要把这些图片中的一些放在身体视图索引上面,一些放在身体视图索引下面 然而,我很难想出如何在身体后面添加图像。我想我可以尝试在viewController上创建UIImageView属性作为参考点,并执行以下操作: //this is from my menuItem cla

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

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

然而,我很难想出如何在身体后面添加图像。我想我可以尝试在viewController上创建UIImageView属性作为参考点,并执行以下操作:

 //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];
但是,这段代码不起作用,因为我在类型为“UIViewController*”的对象上没有找到警告属性体,即使我使用@Property和@synthesis

有人知道我做错了什么,或者有更好的设计来实现这一点吗?谢谢

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

[self.view insertSubview:sprite belowSubview:body]。不要在self之后插入viewController,因为self就是viewController。

有两件事我似乎无法理解

[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)]autorelease];
属性保留UIImage视图。您应该释放它。

问题已解决:

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


感谢您的帮助。

在您的问题中添加项目的接口部分中如何定义主体的代码嗨,我提到了我的属性并将其合成。这还不够吗?[at]属性非原子,保留UIImageView*主体;哦,我的错-[self.view insertSubview:sprite belowSubview:body]。不要在self之后插入viewController,因为self是viewController。嗨,我不能在这个类中这样做。我正在实例化MenuItem类UIImageView子类中的图像,该子类嵌套在滚动视图中。我可以使用[self.viewController.view addSubview:sprite]将其显示在viewController中,现在只需考虑如何将其添加到主体下方。您可以发布一些代码吗?看起来你把结构弄乱了一点。当然,你想看看哪个部分?我的viewController只是添加body子视图,并创建一个包含两个菜单项的scrollview。当一个菜单项被触摸时,它会实例化精灵。使用addSubview将精灵添加到viewController没有问题,但我需要将它们添加到body imageview后面的viewController。是否有变量定义的viewController?谢谢回复。我正在viewController类中实例化主体。然而,我正在一个名为MenuItem的单独类中实例化精灵。MenuItem是一个imageView子类。当用户触摸屏幕上的菜单项时,它会在viewController.view上实例化图形,即.hat*编辑:是的,menuItem有一个名为viewController的属性,该属性在我创建menuItems时由viewController menuItem.viewController=self定义。从菜单项向主视图添加代码是一种不好的做法…您应该做的是将精灵另存为菜单项类中的属性..将其作为实例方法…在主视图中使用Menuitem实例创建精灵,然后将其添加到主classHi的视图中,谢谢提示。我将其添加到menuItem中的原因是,我对menuItem具有平移效果,允许用户将menuItem从菜单拖动到场景中。这就是我将精灵实例化到viewController的时候。我已经有它的工作,我可以添加子视图没有问题,弄清楚如何访问身体子视图将意味着我只需要影响这一行代码。谢谢
 self.body = [[[UIImageView alloc] initWithFrame:CGRectMake(250, 300, 339, 562)]autorelease];