使用 UITableViewController 时,我应该如何实现非弹跳 UITableView?
Posted
技术标签:
【中文标题】使用 UITableViewController 时,我应该如何实现非弹跳 UITableView?【英文标题】:How should I achieve a non-bouncing UITableView when using UITableViewController? 【发布时间】:2012-03-15 23:42:59 【问题描述】:在我正在开发的 iPad 应用程序中,我想显示一个不滚动且不反弹的 UITableView(这意味着尝试向上或向下滚动 tableview 不会显示滚动和回弹效果)。我想这样做的原因是 UITableView 包含固定数量的单元格,并将可见空间平均分配给单元格数量(tableView:heightForRowAtIndexPath:
)。将不需要滚动。 UITableView 和 UIScrollView 是用户不需要知道的实现细节。
UIScrollView 有一个布尔值 bounces
属性,如果我可以访问 UIScrollView 实例,我可以将其设置为 NO
。
我希望 UITableViewController 的 UITableView 实例具有 UIScrollView 的父视图。但是,在我的 UITableViewController 子类中,self.view.superview
和 self.tableView.superview
都为零。我已经在我的 UITableViewController 的 -initWithStyle:
、-viewDidLoad
和 -viewWillAppear:
方法中确定了这一点。
还有其他方法可以访问包含我的 UITableView 的 UIScrollView 吗?我想这种技术将涉及最少的代码,尽管没有从 UITableViewController 或 UITableView 直接访问 UIScrollView 实例的方法。
或者我应该继承 UIViewController 而不是 UITableViewController,并实例化一个未包含在 UIScrollView 中的 UITableView?还是我忽略了其他选择?
【问题讨论】:
Disable UITableView vertical bounces when scrolling的可能重复 【参考方案1】:UITableView
是UIScrollView
的子类,因此UITableView
具有反弹属性(UIScrollView
具有的所有属性)。
所以要取消退回,您需要写self.tableView.bounces = NO;
。要取消滚动,self.tableView.scrollEnabled = NO;
当然,您可以使用 Interface Builder 设置此属性。
【讨论】:
另外,Apple 不鼓励在 UIScrollViews 中使用 UIScrollViews,所以如果你在 UIScrollView 中有 UITableView,你可能会看到奇怪的滚动行为。 谢谢;我没想到会这样!我还在 Mac OS X 上使用过 NSTableView,它不是 NSScrollView 的子类。 我将self.tableView.bounces = NO;
和self.tableView.scrollEnabled = NO;
添加到-initWithStyle:
,效果很好!以上是关于使用 UITableViewController 时,我应该如何实现非弹跳 UITableView?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能使用“List”作为 UITableViewController 子类的类名?
在 UITableViewController 上使用 UIViewController 类