首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UITableView contentOffset行为古怪

UITableView contentOffset行为古怪
EN

Stack Overflow用户
提问于 2014-01-26 02:26:16
回答 2查看 2.4K关注 0票数 2

我有一个UIViewController,它有多个从屏幕外输入的UIViews。我没有初始化和设计UIViewController中的所有这些nib文件,而是使用相应的.h/.m文件创建了单独的.h/.m文件,这些文件只是预加载的。

在其中一个自定义UIViews中,我有一个带有头UIView的UITableView。我正在尝试将这个头隐藏在我在原始UIViewController中的另一个组件下,这个UIView将滑入其中。我最初使用[self.tableView setContentOffset:CGPointMake(0, 44) animated:NO];的示例项目解决了这个问题,但这只是在一个UITableViewController中完成的。

由于某些原因,这不适用于子类UIView。我尝试在- (id)initWithCoder:(NSCoder *)aDecoder- (void)layoutSubviews中设置tableView的内容偏移量,并且一直在检查偏移量是否在tableView:cellForRowAtIndexPath:中被实际设置为

代码语言:javascript
复制
NSLog(@"tableView Content Offset: %@", NSStringFromCGPoint(self.tableView.contentOffset));

但它又回来了

tableView Content Offset: {0, 0}

有趣的是,如果我将contentOffset设置为tableView:cellForRowAtIndexPath:,它就能工作!但我知道我不该把它放在那里。有人能向我解释一下,当我从一个只属于子类UITableView的自定义nib加载一个UIView时,我应该如何实现它吗?如果你觉得有帮助的话,我可以把所有的代码都贴出来。

附加信息:

问:你是如何从笔尖加载视图的?- MAB

代码语言:javascript
复制
UIView *newView = [[[NSBundle mainBundle] loadNibNamed:@"ProfileCostTableViewController" owner:self options:nil] objectAtIndex:0];
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-26 04:22:06

我将UITableView子类化,以查看contentOffset何时被rest为{0,0}。它似乎是在ios7中调用私有方法:_adjustContentOffsetIfNecessary。由于该方法没有文档化,所以我不知道如何防止它更改偏移量,因此我认为解决方法是在延迟后或在- (int) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section中更改偏移量。

票数 1
EN

Stack Overflow用户

发布于 2014-01-26 02:37:22

您正在使用addSubview:添加视图,这将触发方法:- (void)willMoveToSuperview:(UIView *)newSuperview,我认为如果您将代码放在那里,它应该能工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21358882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档