Ios UITableViewCell中带有UIPageControl的UIScrollView
我正试图创造这样的东西 以下是我尝试的示例代码: -(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath { 静态NSString*simpleTableIdentifier=@“ReturnMeCell”Ios UITableViewCell中带有UIPageControl的UIScrollView,ios,objective-c,uitableview,uiscrollview,Ios,Objective C,Uitableview,Uiscrollview,我正试图创造这样的东西 以下是我尝试的示例代码: -(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath { 静态NSString*simpleTableIdentifier=@“ReturnMeCell” UITableViewCell*cell=[tableView dequeueReusableCellWithIdentifier:simpleTab
UITableViewCell*cell=[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
如果(单元格==nil)
{
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault重用标识符:simpleTableIdentifier];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
}
UIImageView*rowImageView=(UIImageView*)[带标记的单元格视图:1];
UILabel*问题选项标签=(UILabel*)[带标签的单元格视图:2];
UIImageView*collapseImageView=(UIImageView*)[带标记的单元格视图:3];
UIScrollView*scrollView=(UIScrollView*)[带标记的单元格视图:4];
UIImageView*sampleImageView=(UIImageView*)[带标记的单元格视图:5];
UIButton*sampleButton=(UIButton*)[带标记的单元格视图:6];
UILabel*说明HeaderLabel=(UILabel*)[带标记的单元格视图:7];
UILabel*指令标签=(UILabel*)[带标记的单元格视图:8];
UIPageControl*pgCntrl=(UIPageControl*)[带标记的单元格视图:9];
[rowImageView setImage:[UIImage ImageName:@“normalcell.png”];
questionOptionLabel.text=@;
collapseImageView.image=nil;
scrollView.hidden=是;
sampleImageView.image=nil;sampleImageView.hidden=YES;
sampleButton.hidden=是;
instructionHeaderLabel.text=@“”;instructionHeaderLabel.hidden=是;
instructionsLabel.text=@“;instructionsLabel.hidden=是;
pgCntrl.hidden=是;
[sampleButton addTarget:self action:@selector(userImageButtonTapped:)for ControlEvents:UIControlEventTouchUpInside];
sampleImageView.image=nil;
[collapseImageView setImage:[UIImage ImageName:@“down.png”];
questionOptionLabel.text=@;
instructionHeaderLabel.text=@“指令”;
if(indexPath.row==0)
{
指令headerLabel.hidden=否;
sampleImageView.image=self.barcodeImage;
scrollView.hidden=否;
scrollView.delegate=self;
pgCntrl.hidden=否;
sampleImageView.hidden=否;
sampleButton.hidden=否;
pgCntrl.numberOfPages=5;
pgCntrl.currentPage=0;
对于(int i=0;i我建议您使用不同的方法,因为您的解决方案不可伸缩。如果您想要n个页面,则必须在滚动视图中添加n个图像和标签,这将是一个混乱且不节省内存的问题
请看一下,我想它会满足您的需要。这是我的代码
- (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];
cell.nameLabel.text=@"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;
}
-(void)viewDidLoad
{
[超级视图下载];
tableObj.dataSource=self;
tableObj.delegate=self;
scrollView.delegate=self;
//customObj=[[customCellForText alloc]init];
imageArray=[[NSMutableArray alloc]initWithObjects:[UIImage ImageName:@“image1.jpg”],
[UIImage ImageName:@“image2.jpg”],
[UIImage ImageName:@“男演员阿什顿·库彻壁纸.jpg”,
[UIImage ImageName:@“Man-Booker-Prize-judgets-p-011.jpg”,
[UIImage ImageName:@“man curl.jpg”]
,无];
//pageControl=[[UIPageControl alloc]initWithFrame:CGRectMake(17018010030)];
}
-(NSInteger)表格视图中的节数:(UITableView*)表格视图{
返回1;
}
-(NSInteger)表视图:(UITableView*)表视图行数节:(NSInteger)节{
返回5;
}
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
静态NSString*cellIdentifier=@“cell”;
customCellForText*单元格=[tableObj dequeueReusableCellWithIdentifier:cellIdentifier];
NSArray*nib=[[NSBundle mainBundle]loadNibNamed:@“customCellForText”所有者:自选项:nil];
单元格=[nib objectAtIndex:0];
scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(130,80,150,100)];
scrollView.PaginEnabled=是;
scrollView.delegate=self;
[滚动视图设置ShowShorizontalsCrollinIndicator:否];
//[滚动视图设置显示垂直滚动指示器:否];
self.scrollView.contentSize=CGSizeMake(self.scrollView.frame.size.width*imageArray.count,self.scrollView.frame.size.height);
[cell.contentView addSubview:scrollView];
对于(int i=0;i
为什么您需要在滚动时添加图像?您可以立即添加图像并滚动显示它们吗?@image,您可以将图像上载到tinypic等网站并共享链接。@第二页,是否要延迟加载数据?如果这是您想要的,您可以为此找到一些开源库。:)@OlegFedorov我需要从不同的维度(顶部、底部等)拍摄产品图像,标签提供了说明。@Sufian这是tinyurl链接@Maverick,您可以将此链接添加到您的问题中。
- (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];
cell.nameLabel.text=@"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;
}