【问题标题】:How to call ScrollViewDidScroll delegate method of UITableView in IOSIOS中如何调用UITableView的ScrollViewDidScroll委托方法
【发布时间】:2014-06-27 10:41:32
【问题描述】:

我有一个UITableView,我正在用 cmets 加载照片..

我在每一行中水平滚动图像,并使用 cmets 水平垂直滚动用户照片..

我想在用户评论照片时更新单个单元格。

scrollviewDidScroll 方法中,我有代码用于动态更新 UITableviewCell 的高度并显示 cmets。由于我的要求是相对于滚动照片的 cmets 动态增加自定义单元格的高度。我正在单元格中显示最新的三个 cmets。它应该根据该照片的 0 或 1 或 2 或 3 cmets 动态更新高度..

所以,我尝试了下面的代码..更新单行..

[self.photosTable beginUpdates];
[self.photosTable reloadRowsAtIndexPaths:[self.photosTable indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationAutomatic];

[self.photosTable endUpdates];

[self scrollViewDidScroll:self.photosTable];//As UITableView is sub class of UIScrollview I wrote like that

但是scrollviewDidScroll 没有打电话。如果我滚动表格,那么只有它在调用..

请提出我出错的想法..

提前致谢..

【问题讨论】:

  • 我不建议自己调用委托方法。
  • 如果scrollViewDidScroll:,您可以将主体移动到您的方法中,并从scrollViewDidScroll: 和您上面粘贴的代码sn-p 调用它。但是,我相信您的问题出在其他问题上。

标签: ios objective-c uitableview uiscrollviewdelegate


【解决方案1】:

scrollviewDidScroll 是一个委托方法,当UITableView 滚动时会自动调用。

如果您想滚动UITableView,请尝试使用以下代码:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:n inSection:0];
    [self.tableView scrollToRowAtIndexPath:indexPath
                    atScrollPosition:UITableViewScrollPositionTop
                            animated:YES];

【讨论】:

  • 这会将表格视图滚动到所需的单元格,但是如果您阅读有关该方法的文档,他们会说:“调用此方法不会导致委托接收到 scrollViewDidScroll: 消息,这是正常的用于以编程方式调用的用户界面操作。”
【解决方案2】:

正如其他人指出的那样,您不应该调用自己的委托方法。

这似乎是XY problem

退后一步,解释一下您要在这里完成的工作。为什么需要调用你的 scrollviewDidScroll 方法?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 2011-02-07
    • 1970-01-01
    • 2016-07-16
    相关资源
    最近更新 更多