Настройка UISegmentedControl UITableView, управление страницей, просмотр прокрутки, просмотр изображений - PullRequest
0 голосов
/ 05 октября 2011

У меня есть сегментированный элемент управления с 4 сегментами

сегмент 1 - мне нужен элемент управления страницы, чтобы пролистывать фотографии <- -> влево и вправо.1-4 фотографии максимум

Сегмент 2 и 3 - мне нужен просмотр таблицы

Сегмент 4 - мне нужно, чтобы я мог воспроизводить видео

Я сейчас занимаюсьэто

- (IBAction)infoAction:(id)sender {

NSString * selectedTitle = [info titleForSegmentAtIndex:[info selectedSegmentIndex]];


NSLog(@"Selected Title = %@",selectedTitle);//test


switch ([info selectedSegmentIndex])

{   case 0:
    {
        test.text = [frogInfo.imageFiles objectAtIndex:0];
        test.textColor = [UIColor whiteColor];
        [tempImageView setImage:[UIImage imageNamed:@"Detail1Temp.png"]];
        break;

    }


    case 1:

    {    

        test.text = frogInfo.description;
                    test.textColor = [UIColor whiteColor];
        [tempImageView setImage:[UIImage imageNamed:@"Detail2Temp.png"]];
        break;

    }

    case 2:

    {
        test.text = frogInfo.distribution;
        test.textColor = [UIColor whiteColor];
        [tempImageView setImage:[UIImage imageNamed:@"Detail3Temp.png"]];
        break;

    }

    case 3:

    {

        test.text = [frogInfo.videoFiles objectAtIndex:0];
        test.textColor = [UIColor whiteColor];
        [tempImageView setImage:[UIImage imageNamed:@"Detail4Temp.png"]];
        break;

    }

}

}

изображение с управлением страницей

enter image description here

раздел таблицы просмотра

enter image description here

В зависимости от того, что яхотел бы сделать, это возможно?в этом случае переключения функции?

кто-нибудь может показать или иметь какую-либо ссылку на учебник о том, как работать смахивания управления страницей?

спасибо за чтение

Des

1 Ответ

0 голосов
/ 04 марта 2014

Я сделал что-то очень похожее, хотя я использовал UISlider вместо сегментированного элемента управления - вам нужен постраничный UISCrollview с 4 одинаковыми по размеру страницами (UIViews), загружаемыми горизонтально одна за другой, если каждый занимает всю ширину iPhoneширина страницы равна 320, а ширина содержимого прокрутки равна 1280. Свяжите элементы управления UIsegmented для прокрутки страниц программно:

при условии, что ширина страницы 320:

     -(IBAction)movepage:(id)sender {
      int xloc = (segmentedController.selectedSegmentIndex * 320);
      CGRect fieldrect = CGRectMake(xloc,0,320, pagesize.height);

    [scrollView scrollRectToVisible:fieldrect animated:YES];

}

Toзагрузите представление прокрутки и управляйте контроллером страницы:

pagectrl.numberOfPages = 4;
pagectrl.currentPage = 0;

scrollView.pagingEnabled = YES;
scrollView.contentSize=CGSizeMake(320* pagectrl.numberOfPages, 500);
scrollView.showsVerticalScrollIndicator = NO;
scrollView.showsHorizontalScrollIndicator = YES;
scrollView.bouncesZoom = NO;
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
scrollView.scrollsToTop = NO;


scrollView.delegate = self;
search_url.delegate = self;
user.delegate = self;
password.delegate = self;
rpc_code.delegate = self;


// add pages

int page = 0;

CGRect frame = scrollView.frame;
pagesize = frame.size.width;
frame.origin.y = 0;
frame.origin.x = frame.size.width * page;
firstView.frame = frame;
[scrollView addSubview:firstView];

page ++;
frame.origin.x = frame.size.width * page;
locsubView.frame = frame;
[scrollView addSubview:locsubView];

page ++;
frame.origin.x = frame.size.width * page;
QRgensubView.frame = frame;
[scrollView addSubview:QRgensubView];

page ++;
frame.origin.x = frame.size.width * page;
scansubView.frame = frame;
[scrollView addSubview:scansubView];

page ++;
frame.origin.x = frame.size.width * page;
symbologysubView.frame = frame;
[scrollView addSubview:symbologysubView];


[self registerForKeyboardNotifications];

 CGRect fieldrect = CGRectMake(0,0,320, pagesize);

 [scrollView scrollRectToVisible:fieldrect animated:YES];  //goto 1st page

}

Обратите внимание, что вам может потребоваться контролировать или управлять возможностью пользователя прокручивать представление прокрутки - это можно сделать, настроив делегат вида прокрутки - приведенный ниже код не подходитк вашим точным требованиям, но я уверен, что вы можете выяснить остальное!

 - (void)scrollViewDidScroll:(UIScrollView *)sender
   {
   // We don't want a "feedback loop" between the UIPageControl and the scroll delegate  in

  // which a scroll event generated from the user hitting the page control triggers updates from

   // the delegate method. We use a boolean to disable the delegate logic when the page control is used.

   //  if (pageControlUsed)
   //  {
  // do nothing - the scroll was initiated from the page control, not the user dragging
  //       return;
  //   }

  // Switch the indicator when more than 50% of the previous/next page is visible

  int page = floor((scrollView.contentOffset.x - pagesize / 2) / pagesize) + 1;
  pagectrl.currentPage = page;



  // A possible optimization would be to unload the views+controllers which are no longer visible
 }
...