Совет для горизонтального просмотра прокрутки IOS

Я пытаюсь создать горизонтальные прокрутки (ы). Каждый вид содержит одно изображение. [done]

Изначально, когда приложение открыто, я показываю пару изображений, т. Е. 3, поэтому пользователь может прокручивать назад и вперед между изображениями. [done]

Однако я хочу иметь возможность перейти к другому контроллеру представления и выбрать другое изображение (например, может быть два, например, и отобразить пять изображений в представлении прокрутки вместо того, чтобы сначала отображать 3).

Как это сделать? «обновить» начальное представление прокрутки?

Обновление Должен ли я использовать делегат для этой связи между контроллерами представлений? или как это делается? 1 главный контроллер, другой – выбор изображения?

Эта часть выше и многое другое объясняется статьей здесь (не реклама, я надеюсь, что это тоже поможет кому-то).

Обновление Bounty часть 1 :

Я думаю, что теперь, когда я нашел свой путь вокруг делегатов, у меня есть дополнительный вопрос, на который я не могу найти ответ, все примеры, которые я видел, касались обновления табличных представлений.

Bounty part 2 : Если бы у меня был scrollview внутри моего контроллера представления и некоторые nsimages внутри прокрутки. т.е.:

 - (void)viewDidLoad { [super viewDidLoad]; NSMutableArray *images = ...some images array; for (int i = 0; i < images.count; i++) { CGRect frame; frame.origin.x = self.scrollView.frame.size.width * i; frame.origin.y = 0; frame.size = self.scrollView.frame.size; UIImageView *subview = [[UIImageView alloc] initWithFrame:frame]; subview.image = [images objectAtIndex:i]; [self.scrollView addSubview:subview]; } self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * images.count, self.scrollView.frame.size.height); } 

И пусть говорят, что мой контроллер просмотра реализовал некоторый метод делегирования didAddImage или didRemoveImage .

Это означает, что массив images будет обновлен.

Актуальный вопрос:

Как бы на самом деле «рассказать» диспетчеру просмотра? Теперь у вашего scrollview есть еще одно изображение для отображения, пожалуйста, обновите или перезагрузите?

Если бы у меня было представление таблицы вместо прокрутки и вставка изображений, я бы сделал это примерно так (в моем методе делегата):

 -(void) mockDelegatetablemethod:(...) ...{ [self.images addObject:image]; NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[self.images count] - 1 inSection:0]; [self.tableView insertRowsAtIndexPaths: [NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; [self dismissViewControllerAnimated:YES completion:nil]; } 

Как это сделать для прокрутки?

Обновление Bounty часть 3:

Это «простой» случай, описанный выше, естественно, мне придется поддерживать удаление изображений, а также, если вы хотите удалить все изображения и добавить новые.

Как бы на самом деле «рассказать» диспетчеру просмотра? Теперь у вашего scrollview есть еще одно изображение для отображения, пожалуйста, обновите или перезагрузите?

Ну, вы просто добавили бы новое изображение в качестве подпрограммы вида прокрутки. Итак, что-то вроде:

 - (void)addImage:(UIImage*)image { [images addObject:image]; CGRect frame; frame.origin.x = self.scrollView.frame.size.width * images.count; frame.origin.y = 0; frame.size = self.scrollView.frame.size; UIImageView *subview = [[UIImageView alloc] initWithFrame:frame]; subview.image = image; [self.scrollView addSubview:subview]; self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * images.count, self.scrollView.frame.size.height); } 

Или у вас может быть метод, который идет и «сбрасывает» вид прокрутки, удаляя все дочерние объекты, а затем снова добавляет все изображения в ваш массив изображений. Затем вызовите этот метод в viewDidLoad вместо вашего кода, чтобы вы не дублировали код.

В принципе, здесь нет серебряной пули. Вы сворачиваете свои собственные.

Вам понадобится сделать свой скроллер изображений классом, который вы можете сказать, чтобы загрузить определенные изображения. Вам понадобится ссылка на существующий скроллер изображений, передайте этот указатель в свой другой контроллер «выбрать больше изображений». Затем контроллер «выбрать больше изображений» может сообщить скроллеру изображений, что есть новый список изображений.

Это уже реализовано Apple в их образцовом проекте iOS «PhotoScroller». Он также имеет возможность повторного использования. У них даже есть видео WWDC 2010 по этому поводу. Я думаю, что его передовые методы прокрутки или разработки приложений с scrollviews. Не должно быть трудно переносить на mac