2014-01-30 4 views
0

Я пытаюсь создать что-то вроде этого here.UIScrollView с UIPageControl в UITableViewCell

Вот пример кода, который я пробовал:

- (UITableViewCell *) Tableview: (UITableView *) Tableview cellForRowAtIndexPath: (NSIndexPath *) indexPath { статический NSString * simpleTableIdentifier = @ "RefundMeCell" ;

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

if (cell == nil) 
{ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; 
    cell.selectionStyle=UITableViewCellSelectionStyleNone; 
} 

UIImageView *rowImageView=(UIImageView*)[cell viewWithTag:1]; 
UILabel *questionOptionLabel=(UILabel*)[cell viewWithTag:2]; 
UIImageView *collapseImageView=(UIImageView*)[cell viewWithTag:3]; 
UIScrollView *scrollView=(UIScrollView*)[cell viewWithTag:4]; 
UIImageView *sampleImageView=(UIImageView*)[cell viewWithTag:5]; 
UIButton *sampleButton=(UIButton*)[cell viewWithTag:6]; 
UILabel *instructionHeaderLabel=(UILabel*)[cell viewWithTag:7]; 
UILabel *instructionsLabel=(UILabel*)[cell viewWithTag:8]; 
UIPageControl *pgCntrl=(UIPageControl*)[cell viewWithTag:9]; 

[rowImageView setImage:[UIImage imageNamed:@"normalcell.png"]]; 
questionOptionLabel.text = @""; 
collapseImageView.image = nil; 
scrollView.hidden = YES; 
sampleImageView.image = nil;sampleImageView.hidden = YES; 
sampleButton.hidden = YES; 
instructionHeaderLabel.text = @"";instructionHeaderLabel.hidden = YES; 
instructionsLabel.text = @"";instructionsLabel.hidden = YES; 
pgCntrl.hidden = YES; 


[sampleButton addTarget:self action:@selector(userImageButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; 


sampleImageView.image = nil; 

[collapseImageView setImage:[UIImage imageNamed:@"down.png"]]; 
[email protected]""; 
[email protected]"Instructions"; 

if (indexPath.row == 0) 
{ 
    instructionHeaderLabel.hidden = NO; 
    sampleImageView.image = self.barcodeImage; 
    scrollView.hidden = NO; 
    scrollView.delegate = self; 
    pgCntrl.hidden = NO; 
    sampleImageView.hidden = NO; 
    sampleButton.hidden = NO; 
    pgCntrl.numberOfPages = 5; 
    pgCntrl.currentPage = 0; 
    for (int i = 0; i<5; i++) 
    { 
     [scrollView addSubview:sampleImageView]; 
     [scrollView addSubview:sampleButton]; 
    } 
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * 5, scrollView.frame.size.height); 
} 
else 
{ 
    instructionHeaderLabel.hidden = NO; 
    sampleImageView.image = nil; 
    scrollView.hidden = NO; 
    scrollView.delegate = self; 
    pgCntrl.hidden = NO; 
    sampleImageView.hidden = NO; 
    sampleButton.hidden = NO; 
    pgCntrl.numberOfPages = 3; 
    pgCntrl.currentPage = 0; 
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * 3, scrollView.frame.size.height); 
} 

return cell; 

}

Моя проблема в том, как я могу добавить UIImageView, UILabel, и т.д., когда UIScrollView прокручивается на второй странице?

Он должен выглядеть как этот

http://oi60.tinypic.com/97snib.jpg

В настоящее время UIImageView, UILabel показан только первый раз. когда я перейду на вторую страницу, UIImageView и UILabel прокрутите назад, и ничто не отображается на второй странице.

+0

Почему вам нужно добавить изображения при прокрутке? Можете ли вы просто добавить его сразу, а свиток просто откроет их? –

+0

@ image, вы можете загрузить изображение на сайты, такие как тинипик, и поделиться ссылкой на него. @ вторая страница, вы хотите ленить загрузить данные? Если это то, что вы хотите, для этого вы можете найти библиотеки с открытым исходным кодом. :) – Sufian

+0

@OlegFedorov Мне нужно отображать изображения продуктов разных размеров (сверху, снизу и т. Д.), А этикетка содержит инструкции. – Maverick

ответ

0

Я бы порекомендовал вам использовать другой подход, потому что ваше решение не масштабируется. Если вы хотите n страниц, вам нужно будет добавить n изображений & ярлык на ваш вид прокрутки, который будет беспорядок, а также не эффективен с точки зрения памяти.

Посмотрите на this library Я думаю, это подойдет вам.

+0

несколько очень похоже на то, что я ищу ... – Maverick

1

Вот мой код

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    tableObj.dataSource = self; 
    tableObj.delegate = self; 
    scrollView.delegate = self; 
    // customObj = [[customCellForText alloc]init]; 
    imageArray = [[NSMutableArray alloc]initWithObjects:[UIImage imageNamed:@"image1.jpg"], 
    [UIImage imageNamed:@"image2.jpg"], 
    [UIImage imageNamed:@"man-actor-Ashton-Kutcher-Wallpaper.jpg"], 
    [UIImage imageNamed:@"Man-Booker-Prize-judges-p-011.jpg"], 
    [UIImage imageNamed:@"man-curl.jpg"] 
    ,nil]; 

    // pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(170, 180, 100, 30)]; 

} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    return 5; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    static NSString *cellIdentifier = @"cell"; 
    customCellForText *cell = [tableObj dequeueReusableCellWithIdentifier:cellIdentifier]; 
    NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"customCellForText" owner:self options:nil]; 
    cell = [nib objectAtIndex:0]; 

    scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(130, 80, 150, 100)]; 
    scrollView.pagingEnabled = YES; 
    scrollView.delegate = self; 
    [scrollView setShowsHorizontalScrollIndicator:NO]; 
    //[scrollView setShowsVerticalScrollIndicator:NO]; 
    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * imageArray.count, self.scrollView.frame.size.height); 
    [cell.contentView addSubview:scrollView]; 

    for (int i = 0; i < imageArray.count; i++){ 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * i; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 

     subview = [[UIImageView alloc] initWithFrame:frame]; 
     subview.image = [imageArray objectAtIndex:i]; 
     subview.contentMode = UIViewContentModeScaleAspectFit; 
     [self.scrollView addSubview:subview]; 

    } 

    pageControl = [[UIPageControl alloc]init]; 
    pageControl.frame = CGRectMake(170, 180, 100, 30); 
    pageControl.numberOfPages = imageArray.count; 
    pageControl.currentPage = 0; 
    pageControl.hidesForSinglePage = YES; 
    [cell.contentView addSubview:pageControl]; 
    [pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged]; 

    [email protected]"amol"; 

    return cell; 
} 

- (void)scrollViewDidScroll:(UIScrollView *)sender{ 

    CGFloat pageWidth = sender.frame.size.width; 
    int newPage = floor((sender.contentOffset.x - pageWidth/2)/pageWidth) + 1; 

    self.pageControl.currentPage = newPage; 

    } 
Смежные вопросы