xcode UITableView 中的 UIScrollView 和 UIPageControl
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/5092212/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
UIScrollView and UIPageControl within UITableView
提问by user546459
I've seen lots of sources saying it is possible to include a UIScrollView with UIPageControl inside a UITableViewCellto be able to scroll horizontally(through a list of selectable images), but can't find any raw examples that does what I want. I've gotten my scroll view "working", but I am unsure how to go forward - hopefully someone can send me some guidance.
我已经看到很多消息来源说可以在 UITableViewCell 中包含带有 UIPageControl 的 UIScrollView以便能够水平滚动(通过可选图像列表),但找不到任何原始示例来执行我想要的操作。我已经让我的滚动视图“工作”了,但我不确定如何继续 - 希望有人能给我一些指导。
Within my cellForRowAtIndexPath, I create a cell, and add both a scrollView and pageControl as subviews.
在我的 cellForRowAtIndexPath 中,我创建了一个单元格,并将 scrollView 和 pageControl 添加为子视图。
UITableViewCell *cell = [self.challengeListView dequeueReusableCellWithIdentifier:SubmitChallengeCellIdentifier];
if(cell == nil){
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SubmitChallengeCellIdentifier] autorelease];
cell.frame = CGRectMake(0, 0, 1000, 50);
}
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, tv.frame.size.width, 50)];
[scrollView setContentSize:CGSizeMake(1000, 50)];
[[cell contentView] addSubview:scrollView];
pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 50, tv.frame.size.width, 50)];
[pageControl setNumberOfPages:4];
[[cell contentView] addSubview:pageControl];
I've attached a screenshot of what's being displayed
我附上了正在显示的内容的屏幕截图
the bottom portion of the main view is my UITableView that contains the scrollView/pageControl (and it will scroll horizontally, as I can see the scrollerIndicator showing this), and I've got its method's set to the following:
主视图的底部是我的 UITableView,其中包含 scrollView/pageControl(它将水平滚动,因为我可以看到 scrollerIndicator 显示此内容),并且我已将其方法设置为以下内容:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 1;
}
My Scroll view will indicate a "horizontalScroller" and I am able to scroll back and forth, but obviously there's no contentthere. How do I go about populating the tableView/scrollView with say, a list of "clickable" images? Any direction would be greatly appreciated- preferably not a "hey this guy's done it somewhat similar, check out this link" but maybe more an explanation of how this functionality should be implemented correctly (ESPECIALLY in regards to iOS 3.0+- it is my understanding Apple has made our lives easier in implementing this)
我的滚动视图将指示一个“水平滚动器”,我可以来回滚动,但显然那里没有内容。 我如何去填充 tableView/scrollView 说,“可点击”图像列表?任何方向都将不胜感激- 最好不是“嘿这家伙的做法有点相似,请查看此链接”,但可能更多地解释了如何正确实现此功能(特别是关于 iOS 3.0+- 这是我的了解 Apple 让我们的生活更轻松地实现这一点)
采纳答案by user546459
I've solved my own problem; maybe the reason no once answered me is because its a minor implementation once you understand each view's purpose.
我已经解决了我自己的问题;也许没有一次回答我的原因是因为一旦你理解了每个视图的目的,它就是一个小实现。
From within cellForRowAtIndexPath:
I created a standard UITableViewCell
, however I altered the frame of the cell to my own custom frame of 1000 width by 50 height (catered to my needs for project).
cellForRowAtIndexPath:
我从内部创建了一个标准UITableViewCell
,但是我将单元格的框架更改为我自己的 1000 宽 x 50 高的自定义框架(满足我的项目需求)。
I then created a UIScrollView
, set it to the following (keep in mind I have my tableView defined in IB, so I'm mapping some of my height/widths to those values):
然后我创建了一个UIScrollView
,将其设置为以下(请记住,我在 IB 中定义了我的 tableView,所以我将我的一些高度/宽度映射到这些值):
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, tv.frame.size.width, 78)];
I then create the desired image view (I realize I will next create a loop that does many images and lays them out across the scroll view):
然后我创建了所需的图像视图(我意识到接下来我将创建一个循环来处理许多图像并将它们布置在滚动视图中):
UIImage *image = [UIImage imageNamed:@"dummy.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(0, 0, 80, 78);
[scrollView addSubview: imageView];
Here's the part I was missing. After adding the scrollView to the cell contents, you need to use the UIPageControl
(which didn't seem obvious to me for this implementation at first) to setup the actual "visual horizonal scrolling" affect:
这是我缺少的部分。将 scrollView 添加到单元格内容后,您需要使用UIPageControl
(起初对我来说这个实现并不明显)来设置实际的“视觉水平滚动”效果:
[[cell contentView] addSubview:scrollView];
pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 50, tv.frame.size.width, 50)];
[pageControl setNumberOfPages:4];
[[cell contentView] addSubview:pageControl];
Hope that helps someone's search - I spent quite some time on Google looking for the example I just explained and didn't have much luck other than the general overview of how it would work.
希望对某人的搜索有所帮助 - 我花了很多时间在 Google 上寻找我刚刚解释的示例,除了对其工作方式的总体概述之外,没有太多运气。