我有一个带有几个UIImages(子视图)的UIView,用于保存用户从照片库中选择的照片。我想支持一个功能,用户可以重新排列子视图的顺序。用户获得一个modalviewcontroller,他可以按顺序拖放视图并将其放置到位。但是,当我想更新子视图的顺序时,没有任何反应。唯一成功的是使用bringSubviewToFront:将我拖动到顶部的对象放置到顶部,但这不是我想要的。
我想要使用的方法是exchangeSubviewAtIndex:i withSubviewAtIndex:index
。但我无法让它发挥作用。你们有什么建议我应该怎么解决这个问题吗?
提前致谢! 迈克尔
答案 0 :(得分:0)
你提到“在新的地方删除图像”,这意味着你正在(X,Y)坐标系统中移动UIImageView。子视图数组中的索引仅在Z方向上对视图进行排序(如果它们重叠,则影响“在顶部”)。交换视图顺序不交换(X,Y)坐标。
答案 1 :(得分:0)
它是一个应用程序,你有一堆图像(重叠),你可以看到一系列的。
我使用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];
希望这有助于解决我的难题,让我摆脱头痛:)