我有一个UIViewController,它有多个从屏幕外输入的UIViews。我没有在UIViewController中初始化和设计所有这些UIViews,而是使用相应的.h / .m文件创建了单独的nib文件,这些文件只是预先加载的。
在其中一个自定义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}
有趣的是,如果我在tableView:cellForRowAtIndexPath:
中设置contentOffset就行了!但我知道我不应该把它放在那里。有人可以向我解释当从自定义笔尖加载UITableView时,我应该在何处以及如何实现这一点,而自定义笔尖只是一个子类UIView?如果您认为它有帮助,我可以发布所有代码。
其他信息:
问题:你是如何从笔尖加载视图的? - MAB
UIView *newView = [[[NSBundle mainBundle] loadNibNamed:@"ProfileCostTableViewController" owner:self options:nil] objectAtIndex:0];
答案 0 :(得分:1)
我将UITableView
子类化,以查看contentOffset何时休息为{0,0}。它似乎是来自私有方法的ios7中的一个调用:_adjustContentOffsetIfNecessary
。由于此方法未记录,因此我没有看到如何防止它更改偏移量,因此我认为解决方法是在延迟后或- (int) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
中更改偏移量。
答案 1 :(得分:0)
您正在使用触发方法的addSubview:
添加视图:- (void)willMoveToSuperview:(UIView *)newSuperview
我认为如果您将代码放在那里它应该可以正常工作。