2011-05-31 96 views
0

我有一個帶有幾個UIImages(子視圖)的UIView,用於保存用戶從照片庫中選擇的照片。我想支持用戶可以重新排列子視圖順序的功能。用戶得到一個modalviewcontroller,在那裏他可以按順序拖放視圖並將其放置到位。但是當我想更新子視圖的順序時,什麼都不會發生。唯一成功的是使用bringSubviewToFront將我拖動到頂端的對象放置到頂端,但這不是我想要的。objective-c管理子視圖的順序

我想使用的方法是exchangeSubviewAtIndex:i withSubviewAtIndex:index。但我無法讓它工作。你們有什麼建議我應該如何解決這個問題?

在此先感謝! Michael

+0

你現在怎麼實現'exchangeSubview ...'方法? – 2011-05-31 21:04:05

+3

我認爲看到一些代碼在這裏會有所幫助。你如何將子視圖放在他們的父視圖中開始?也就是說,UIImageView的佈局是否在UIView中都是可見的?它們以某種方式重疊?你想要呈現一些像一堆照片? – 2011-05-31 21:11:19

+0

我不知道是否echangeSubviewAtIndex:...顯式調用[view setNeedsDisplay]或[view setNeedsLayout]。你可以試試,也要確保你的索引是有效的,並且在(0- [[view subviews] count] -1)的範圍內。 – 2011-05-31 21:14:01

回答

0

您提到「將圖像放在新位置」,這意味着您正在將UIImageView移動到(X,Y)座標系中。子視圖數組中的索引僅在Z方向上排列視圖(如果它們重疊,則影響哪個視圖處於「頂部」)。交換視圖順序將不是交換(X,Y)座標。

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的空氣質量準則的一個實例ridView庫,它像一個tableViewController,但有一些擴展。它像一個跳板應用程序。當用戶「滴」的圖像到一個新的地方,我叫

[spinnerView exchangeSubviewAtIndex:_dragOriginIndex withSubviewAtIndex:index]; 

,表中的陣列已經更新剛過:

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

希望這有助於解決我的難題一個擺脫我我的頭痛:)