ios - UITableView contentOffset 行为异常

标签 ios iphone objective-c uiview

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

在其中一个自定义 UIView 中,我有一个带有 header UIView 的 UITableView。我试图将此 header 隐藏在原始 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 内容偏移:{0, 0}

有趣的是,如果我在 tableView:cellForRowAtIndexPath: 中设置 contentOffset,它就会起作用!但我知道我不应该把它放在那里。有人可以向我解释从自定义 Nib 加载 UITableView 时我应该在哪里以及如何实现它,它只是一个子类 UIView?如果您认为有帮助,我可以发布所有代码。

附加信息:
问题:您如何从 Nib 加载 View ? ——人与生物圈

UIView *newView = [[[NSBundle mainBundle] loadNibNamed:@"ProfileCostTableViewController" owner:self options:nil] objectAtIndex:0];

最佳答案

我将 UITableView 子类化以查看 contentOffset 何时被重置为 {0,0}。它似乎是在 ios7 中从私有(private)方法调用:_adjustContentOffsetIfNecessary。由于未记录此方法,我看不到如何防止它更改偏移量,因此我认为解决方法是在延迟后或在 - (int) tableView:(UITableView *)tableView numberOfRowsInSection 中更改偏移量:(NSInteger) 部分

关于ios - UITableView contentOffset 行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21358882/

相关文章:

iphone - 在 CIFilter : getting empty image 中使用来自 CIColor 的 CIImage

iphone - AVCaptureMovieFileOutput - 如何保存视频

iphone 开发 : one button two actions

ios - didRegisterForRemoteNotificationsWithDeviceToken 在 ios 9 中没有调用

ios - 让 UITableView 滚动时键盘消失

html - RTF中的文本背景颜色

html - iframe 在 iOS 中打开全高 - 如何避免这种情况?

iPhone 相机图像作为 OpenGL ES 纹理

iphone - 通过传递值查找 NSArray 的索引

ios - 根据每个段中的标题更改分段控件的宽度?