как переместить viewViewController в другое представление с изображениями в scrollview

#iphone #uinavigationcontroller #uiscrollview #uiimageview

#iPhone #uinavigationcontroller #uiscrollview #uiimageview

Вопрос:

У меня есть scrollview of images , я хотел бы добавить их и перенести в другое представление.

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

Из этого представления в другое представление

1

Подробный просмотр

2

Извините, что не задал вопрос четко.

мой scrollview

 -(void)pictureScrolling
{
//init scrollview in location on screen
scrollview = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 100, 320, 290)];   
scrollview.backgroundColor = [UIColor redColor];
//pass image filenames
NSMutableArray *fileNames = nearbyFrog.imageFiles; //[[[NSMutableArray alloc] init] autorelease];

//setup the array of uiimageviews
NSMutableArray *imgArray = [[NSMutableArray alloc] init];
UIImageView *imageView;

//loop through the array imgNames to add file names to imgArray
for (NSString *imageName in fileNames) {

    imageView = [[UIImageView alloc] init];
    imageView.image = [UIImage imageNamed:imageName];
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    [imgArray addObject:imageView];
    [imageView release];
}

CGSize pageSize = scrollview.frame.size; 
NSUInteger page = 0;

for (UIView *viewForScrollView in imgArray) {

    [scrollview addSubview:viewForScrollView];

    viewForScrollView.frame = CGRectMake(pageSize.width * page    10, 0, pageSize.width -20 , pageSize.height);

    // making use of the scrollView's frame size (pageSize) so we need to;
    //  10 to left offset of image pos (1/2 the gap)
    // -20 for UIImageView's width (to leave 10 gap at left and right)
}
//add scroll view to view
[self.view addSubview:scrollview];
scrollview.contentSize = CGSizeMake(pageSize.width * [imgArray count], pageSize.height);

//scrollview.contentSize = CGSizeMake(320 *viewcount   20, 290 );
scrollview.showsHorizontalScrollIndicator =NO;
[scrollview setPagingEnabled:YES];
scrollview.delegate =self;

//paging function for scrollview
CGRect frame = [[UIScreen mainScreen] applicationFrame];
self.pageControl = [[[UIPageControl alloc] initWithFrame:CGRectMake(0, 100, 100, 50)] autorelease];
self.pageControl.center = CGPointMake(frame.size.width/2, frame.size.height-60);
self.pageControl.numberOfPages = [fileNames count];
[self.view addSubview:self.pageControl];    

//handle Touch Even
[pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
[imgArray release];
  

}

кто-нибудь знает, как это сделать, или может показать мне учебник?

Спасибо

Комментарии:

1. Правильно ли, что у вас есть scrollview с изображениями в нем, и если вы нажмете на изображение, изображение должно быть передано в navigationcontroller?

2. Ваш вопрос не совсем ясен, ответьте на вопрос @thomas или уточните его для ясности.

3. извините за это, отредактировал мой вопрос и добавил картинку для большей ясности.

Ответ №1:

Я думаю, что это лучший способ его реализации

  1. Создайте свой собственный пользовательский класс UIImageView. Это требуется для сохранения дополнительного свойства, которое поможет вам определить, какое изображение нужно щелкнуть.
  2. Создайте делегат для этого класса, который вызывается с помощью события single tap, вызываемого в UIImageView
  3. Добавьте изображения внутри scrollview, используя этот пользовательский класс. Делегат этого класса сообщит вам, какое изображение было задействовано. Вы можете использовать это для отправки нового контроллера представления, передающего детали изображения (при необходимости).

Вы можете найти некоторый пример кода в классе ThumbImageView в примере ScrollViewSuite

http://developer.apple.com/library/ios/#samplecode/ScrollViewSuite/Introduction/Intro.html#//apple_ref/doc/uid/DTS40008904-Intro-DontLinkElementID_2

Комментарии:

1. спасибо за ответ, сейчас я просматриваю код… но я все еще не могу понять, как это работает

2. Поскольку вы нажимаете внутри UIImageView, событие касания фиксируется UIImageView. Вам необходимо распространить то же самое на Viewcontroller, что позволит вам принять решение о включении следующего контроллера представления. Следовательно, вам нужен делегат в UIImageView. Поскольку UIImageView не имеет свойства для хранения имени изображения, вам необходимо создать свойство самостоятельно

3. но UIImageView является подвидом scrollview