Iphone objective-c子视图的管理顺序

Iphone objective-c子视图的管理顺序,iphone,objective-c,ios,uiview,subviews,Iphone,Objective C,Ios,Uiview,Subviews,我有一个UIView,其中包含几个UIImages子视图,用于保存用户从照片库中选择的照片。我想支持一个功能,用户可以重新排列子视图的顺序。用户获得一个modalviewcontroller,在这里他可以按顺序拖放视图并将其放置到位。但是当我想更新子视图的顺序时,什么都不会发生。唯一成功的方法是使用bringSubviewToFront:,将我拖动的对象放置到顶部,但这不是我想要的 我要使用的方法是exchangeSubviewAtIndex:I和SubViewatindex:index。但我不

我有一个UIView,其中包含几个UIImages子视图,用于保存用户从照片库中选择的照片。我想支持一个功能,用户可以重新排列子视图的顺序。用户获得一个modalviewcontroller,在这里他可以按顺序拖放视图并将其放置到位。但是当我想更新子视图的顺序时,什么都不会发生。唯一成功的方法是使用bringSubviewToFront:,将我拖动的对象放置到顶部,但这不是我想要的

我要使用的方法是exchangeSubviewAtIndex:I和SubViewatindex:index。但我不能让它工作。你们对我该如何处理这个问题有什么建议吗

提前谢谢!
Michael

如果您提到将图像放置在新位置,这意味着您正在X,Y坐标系中移动UIImageView。子视图数组中的索引仅在Z方向对视图进行排序,如果重叠,Z方向位于顶部。交换视图顺序不会交换X、Y坐标。

这是一个应用程序,其中有一堆重叠的图像,您可以观看一系列图像

我使用的是ELCImagePicker,它是摄影机卷的一个扩展,允许我们在摄影机卷中选择多个图像

我在字典中得到返回的图像,如下所示:

for(NSDictionary *dict in info) {
        UIImageView *thisImageView = [[UIImageView alloc] initWithImage:[dict objectForKey:UIImagePickerControllerOriginalImage]];
        [array insertObject:thisImageView atIndex:[thearray count]];
        [thisImageView release];
}

然后我按下一个视图控制器,它显示正确的图像——它显示我的UIView子类SpinnerView

在SpinnerView中,我布置了子视图:

spinnerImages = [[NSMutableArray alloc] initWithArray:thearray];
for (UIView *object in spinnerImages) {
    [object setContentMode:UIViewContentModeScaleAspectFit];
    object.frame = self.frame;
    [self addSubview:object];
}
当用户想要管理订单时,他们单击一个编辑按钮并获得一个modalViewController,这是AQGridView库的一个实例,它的工作方式类似于tableViewController,但有一些扩展。它的工作原理类似于跳板应用程序。当用户将图像放到新位置时,我调用

[spinnerView exchangeSubviewAtIndex:_dragOriginIndex withSubviewAtIndex:index];
,在表更新数组之后:

// update the data store
    id obj = [[images objectAtIndex: _dragOriginIndex] retain];
    [images removeObjectAtIndex: _dragOriginIndex];
    [images insertObject: obj atIndex: index];

希望这有助于解决我的难题,摆脱我的头痛:

您如何实现exchangeSubview。。。方法?我认为在这里看到一些代码会很有帮助。首先,如何将子视图放置在其父视图中?也就是说,UIImageView的布局是否使它们在UIView中都可见?它们是否以某种方式重叠?你想展示一堆照片吗?我不知道EchangeSubviewatinex:。。。显式调用[view setNeedsDisplay]或[view setNeedsLayout]。你可以试试,也可以确保你的索引是有效的,并且在0-[[view subviews]count]-1的范围内。这是一个应用程序,你可以在其中重叠一堆图像,你可以观看一系列图像。我使用的是ELCImagePicker,它是摄影机卷的一个扩展,允许我们在摄影机卷中选择多个图像。我在字典中得到返回的图像,如下所示:forNSDictionary*dict in info{UIImageView*thisImageView=[[UIImageView alloc]initWithImage:[dict objectForKey:UIImagePickerController原始图像]];[array insertObject:thisImageView atIndex:[thearray count]];[thisImageView release];]然后,我推送一个视图控制器,它向我显示正确的图像–它显示我的UIView子类SpinnerView在SpinnerView中,我布局子视图:spinnerImages=[[NSMutableArray alloc]initWithArray:thearray];对于spinnerImages中的UIView*对象{[object setContentMode:UIViewContentModeScaleAspectFit];object.frame=self.frame;[self addSubview:object];}