target-c управление заказами для подпредставлений - PullRequest
0 голосов
/ 01 июня 2011

У меня есть UIView с несколькими UIImages (подпредставлениями), которые содержат фотографии, которые пользователь выбирает из библиотеки фотографий. Я хочу поддержать функцию, где пользователь может изменить порядок подпредставлений. Пользователь получает modalviewcontroller, где он может перетаскивать представления по порядку и размещать его на месте. Но когда я хочу обновить порядок подпредставлений, ничего не происходит. Единственное, что удается, - это поместить объект, который я перетаскиваю, в верхнюю часть с помощью метода takeSubviewToFront:, но это не то, что я хочу.

Я хочу использовать метод exchangeSubviewAtIndex:i withSubviewAtIndex:index. Но я не могу заставить его работать. Ребята, есть ли у вас какие-либо предложения о том, как мне это решить?

Заранее спасибо! Michael

Ответы [ 2 ]

0 голосов
/ 01 июня 2011

Это приложение, в котором у вас есть стопка изображений (внахлест), которые вы можете наблюдать за последовательностью.

Я использую 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];

Надеюсь, это поможет решить мою головоломку и избавит меня от головной боли:)

0 голосов
/ 01 июня 2011

Вы упоминаете «удаление изображения в новом месте» , это означает, что вы перемещаете UIImageView в (X, Y) систему координат.Индекс в массиве subviews упорядочивает представления только в направлении Z (эффект, который находится «сверху», если они перекрываются).Смена порядка просмотра не меняет координаты (X, Y).

...