如何setContentOffset:在insertRowAtIndexPath之后:

时间:2012-02-22 08:43:35

标签: iphone objective-c cocoa-touch

我为iOS 5开发了一款应用。

如何在表格视图中插入行(contentOffset)后设置insertRowAtIndexPath:insertRowAtIndexPath:将偏移量设置为0.我尝试在willDisplayRow:委托方法中设置偏移但没有结果。

2 个答案:

答案 0 :(得分:2)

如果您要在行插入动画完成后更改偏移的问题,则调用方法以在延迟后设置偏移。这将使当前运行循环完成,允许完成行插入动画。您可能希望在延迟期间禁用与表视图的交互。

您可以尝试在tableViewController中添加以下内容。

- (void) adjustsContentOffset: (NSIndexPath*) indexPath;
{
    CGFloat offsetY = 0.0; // insert some calculation deriving your value from indexPath
    [[self tableView] setContentOffset: CGPointMake(0.0, offsetY) animated: YES];
}

- (void) insertRow: (NSIndexPath*) indexPath;
{
    [[self tableView] insertRowsAtIndexPaths: [NSArray arrayWithObject: indexPath] withRowAnimation:UITableViewRowAnimationLeft];
    [self performSelector: @selector(adjustsContentOffset:) withObject: indexPath afterDelay: 0.3];
}

答案 1 :(得分:0)

再次感谢Matthew您真正有用的答案,但最后我找到了另一个我希望与社区分享的解决方案:

只需在表格末尾添加一个空单元格,其高度等于所需的偏移量