我有一个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:中被实际设置为
NSLog(@"tableView Content Offset: %@", NSStringFromCGPoint(self.tableView.contentOffset));但它又回来了
tableView Content Offset: {0, 0}
有趣的是,如果我将contentOffset设置为tableView:cellForRowAtIndexPath:,它就能工作!但我知道我不该把它放在那里。有人能向我解释一下,当我从一个只属于子类UITableView的自定义nib加载一个UIView时,我应该如何实现它吗?如果你觉得有帮助的话,我可以把所有的代码都贴出来。
附加信息:
问:你是如何从笔尖加载视图的?- MAB
UIView *newView = [[[NSBundle mainBundle] loadNibNamed:@"ProfileCostTableViewController" owner:self options:nil] objectAtIndex:0];发布于 2014-01-26 04:22:06
我将UITableView子类化,以查看contentOffset何时被rest为{0,0}。它似乎是在ios7中调用私有方法:_adjustContentOffsetIfNecessary。由于该方法没有文档化,所以我不知道如何防止它更改偏移量,因此我认为解决方法是在延迟后或在- (int) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section中更改偏移量。
发布于 2014-01-26 02:37:22
您正在使用addSubview:添加视图,这将触发方法:- (void)willMoveToSuperview:(UIView *)newSuperview,我认为如果您将代码放在那里,它应该能工作。
https://stackoverflow.com/questions/21358882
复制相似问题