UIScrollView 内的 UITableViewController 与水平分页

Posted

技术标签:

【中文标题】UIScrollView 内的 UITableViewController 与水平分页【英文标题】:UITableViewController inside UIScrollView with Horizontal Paging 【发布时间】:2012-06-29 12:46:02 【问题描述】:

情况是这样的:

我需要水平滚动和每个页面内的表格视图。这有点像新闻应用,它应该显示来自不同类别的新闻,当在一个水平方向滚动时,在一个类别内它应该显示大约 30 条新闻,当然可以垂直滚动。

我已经成功地完成了我需要的,但是......

我有以下场景:

UINavigationController
|__ UIViewController, which contains ScrollView and PageControl
    |__ UITableViewController, which holds data in rows, and is displayed inside parent, which is actually ScollView

我知道这不是一个理想的解决方案,但至少它有效。作为基础,我使用了link 上的 Apple 代码和 PageScroll 教程。我没有将简单的 viewController 添加到 ScrollView,而是使用 TableViewController,所以基本上我将 tableController.tableView 添加到 ScrollView。

我也知道,在滚动视图中添加 tableViews 有点像在卡车中添加汽车并驾驶那辆汽车,但我找不到更合理的方法来做同样的事情。

所以,我需要您对如何使用其他方法来实现这一点的想法。我为此使用了故事板和 ios 5,现在一切看起来(看起来)都很混乱。

非常感谢。

【问题讨论】:

我在这里遇到了完全相同的问题。那么你最后是怎么解决这个问题的呢?还在 UIScrollView 里面添加 UITableViewControllers 吗?谢谢! 【参考方案1】:

几个月前我做过类似的事情,是这样的:

UINavigationController UIViewControllerUIScrollView UIViewController 里面有一个UITableView(我用这个是因为我讨厌UITablewViewController

我关注了Apple's documentation about creating custom containers。如果我没记错的话,在 WWDC 2011 视频部分有一个很棒的视频。我可以自豪地说,代码非常简洁易懂。


答案 1.0

一件事是,您是否设法在没有任何 hack 的情况下正确处理 tableView 的方向,或者您不使用它?

不,在这种情况下我没有,但我确信我可以毫无问题地做到这一点。你看,当你只是[self.view addSubView:newViewController.view]; 时,大多数问题都会出现。您只需添加UIView,所有旋转逻辑都由newViewController 处理,而不是在UIView 所在的控制器中。

另一件事是,如果我要尝试实现,比如 GridView 或类似的东西,对于 iPad,方向处理和动画变得非常丑陋。

我在另一个项目中实现了这一点,一旦您了解发生了什么,它就很容易实现:

    我使用了UIViewControllerUITableView,所以我可以从dequeueReusableCellWithIdentifier: 中获得所有好处,创建部分的标题、表格的页眉和页脚等。我只是想,不管我会做什么UIScrollView UITableView 总是会更加优化。作为UITableViewCell's,我只使用了一个有3个正方形的支架,每个都是一张图片。 (我的应用是图片展示)

【讨论】:

嗯,这看起来和我的一样,除了你讨厌的东西。一件事是,您是否设法在没有任何黑客攻击的情况下对 tableView 进行了正确的方向处理,或者您不使用它?另一件事是,如果我要尝试实现,比如 GridView 或类似的东西,对于 iPad,方向处理和动画变得非常难看。 @Jacky Boy,当然感谢您的回答。 Q1:让我们看看我是否理解正确:[self.view addSubView:newViewController.view](我使用 [scrollView addSubview:newController.tableView])是正确的方式,还是我应该加载新页面(控制器)不同?当我按照我的方式做时,当方向改变时,单元格的宽度保持与纵向相同,之后显示下一页的一部分。【参考方案2】:

http://www.raywenderlich.com/4680/how-to-make-an-interface-with-horizontal-tables-like-the-pulse-news-app-part-1

查看上面的链接

【讨论】:

不完全是我需要的,但是很棒的教程。谢谢。

以上是关于UIScrollView 内的 UITableViewController 与水平分页的主要内容,如果未能解决你的问题,请参考以下文章

限制 UIScrollView 内的 UILabel 的高度

UIScrollview 内的 UIView 内的 UILabel 上的 UIGestureRecognizer

UIScrollview内的UIView内的UIButton,ARC问题

Swift - 通过点击 ScrollView 内的 ViewController 内的按钮来滚动 UIScrollView

UIScrollView 内的 CPTXYGraph

UIScrollView 内的 UIVIew 反弹回来