首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

tableView.setContentOffset(_,animated:)在beginUpdates()之后不起作用

tableView.setContentOffset(_, animated:)在beginUpdates()之后不起作用是因为beginUpdates()和endUpdates()方法用于在更新tableView的数据源之前和之后执行一系列的插入、删除、移动等操作,以保持tableView的一致性。在这个过程中,tableView会自动计算并调整其内容的偏移量,以确保更新后的数据正确显示。

由于beginUpdates()和endUpdates()方法会导致tableView重新计算内容的偏移量,所以在这两个方法之间调用setContentOffset(, animated:)是无效的。如果想要在更新tableView数据源后改变内容的偏移量,可以在endUpdates()方法之后调用setContentOffset(, animated:)。

以下是一个示例代码:

代码语言:txt
复制
tableView.beginUpdates()

// 在这里执行插入、删除、移动等操作

tableView.endUpdates()

tableView.setContentOffset(_, animated: true)

在这个示例中,tableView的数据源更新操作在beginUpdates()和endUpdates()之间执行,然后在endUpdates()之后调用setContentOffset(_, animated:)来改变内容的偏移量。

需要注意的是,setContentOffset(_, animated:)方法中的第一个参数应该是一个CGPoint类型的值,用于指定tableView的新的内容偏移量。animated参数用于指定是否以动画的方式滚动到指定的偏移量。

对于这个问题,腾讯云并没有特定的产品或服务与之相关。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【iOS 开发】tableView updates 对比 reloadData

    tableData.append("\(tableData.count)") tableData.append("\(tableData.count)") tableView.beginUpdates...这里 beginUpdates 和 endUpdates 方法的作用是,将这两条语句之间的对 tableView 的 insert/delete 操作聚合起来,然后同时更新 UI。...: 0)], with: UITableViewRowAnimation.automatic) // tableView.endUpdates() } 因为第一次 insert 之后...,当前 row 的总数量 UI 上试图 4 变成 5,然而数据源是 6,它会检查使用者对 tableView 的 UI 操作,最后是不是和 numberOfRows 方法获取的值相对应。...带来额外的不必要开销,缺乏动画 updates 方法缺陷:deleteRows 不会调用 cellForRow 方法,可能导致显示结果与数据源不一致;需要手动保证 insertRows、deleteRows 之后

    1.8K30

    UITableView reloadData或viewWillAppear失效

    今天在做开发的时候,忽然发现在视图的viewWillAppear:方法中添加: [self.tableView reloadData]; 不起作用,viewWillAppear:这个方法根本没有调用 后来发现原来用了...viewWillAppear方法是没有效果的,要用UINavigationControllerDelegate的– navigationController:willShowViewController:animated...所以要做到这个,你必须做以下几步: 设置代理类 nav.delegate = self; 代理类实现UINavigationControllerDelegate Protocol 代理类中添加– navigationController...:willShowViewController:animated:方法 如: - (void)navigationController:(UINavigationController *)navigationController...willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { [self.myTableView

    59130

    iOS状态栏设置

    appearance设置为NO 设置前景色为白色 UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated...: false); 设置前景色为黑色 UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.Default, animated...UIStatusBarAnimation.Slide } ViewController加载时会自动调用preferredStatusBarStyle方法和prefersStatusBarHidden方法 如果要想之后事件里设置前景色或隐藏的话...; 注意 1) appear.translucent配置早期系统会崩溃,不建议配置,建议ViewController中配置 2) translucent=true也就是透明时,barTintColor...不起作用,backgroundColor起作用 3) translucent=false也就是不透明时,barTintColor起作用,backgroundColor不起作用 4) translucent

    2.7K11

    iOS开发·runtime原理与实践: 方法交换篇(Method Swizzling)(iOS“黑魔法”,埋点统计,禁止UI控件连续点击,防奔溃处理)

    Swizzing是发生在运行时的,主要用于在运行时将两个Method进行交换,我们可以将Method Swizzling代码写到任何地方,但是只有在这段Method Swilzzling代码执行完毕之后互换才起作用...{ // call original implementation [self swizzled_viewDidAppear:animated]; // Logging...这是因为Method Swizzling对NSArray这些的类簇是不起作用的。 因为这些类簇类,其实是一种抽象工厂的设计模式。...: NSArray+CrashHandle.m @implementation NSArray (CrashHandle) // Swizzling核心代码 // 需要注意的是,好多同学反馈下面代码不起作用...array = @[@0, @1, @2, @3]; [array objectAtIndex:3]; //本来要奔溃的 [array objectAtIndex:4]; } 运行之后

    2.6K60

    iOS 知识小集(Status Bar变换)

    而改变状态栏颜色和控制状态栏显示和隐藏的API,iOS 的不同版本中也发生了很多变化。 iOS 7以前 iOS 7之前,状态栏是不占视图位置的。...动画效果其实就是变换的时间变慢了 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated...动画效果其实就是变换的时间变慢了 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated...效果gif iOS 9 之后 如上面第二张图所示,UIApplication的控制状态栏的方法,iOS 9之后被弃用了。 所以iOS 9之后尽量使用重写ViewController方法的方式吧。...注意点 ** 情形一 ** 如果我们使用UINavigationController,会发现在原来的ViewController里修改状态栏的style不起作用了,但是控制状态栏的显示和隐藏依然OK。

    1.3K21

    iOS小经验:UITableView&UICollectionView设置单元格的默认选中状态

    一个思路 通过实现选中和非选择的代理,以适当的时机进行UI更新操作。 3....UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath; 3.2 代码设置默认选中状态 (要等数据加载完成之后再调用...之后,通过屏幕点击选中其它cell的时候,可以执行- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath...UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath; 4.2 代码设置默认选中状态 (要等数据加载完成之后再调用...之后,通过屏幕点击选中其它cell的时候,可以执行- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath

    3.6K50

    iOS集成极光推送iOS集成极光推送

    工程文件中,做如下设置: ?...apsForProduction:isProduction]; } 说明: isProduction 这个参数,当时询问极光工作人员的时候,他们说这个参数是保留参数,不起作用...presentViewController:vc animated:YES completion:nil]; 三、关于极光推送收不到后台推送的通知的问题 首先,要了解一下 iOS的开发环境和生产环境。...以至于后来 app 发布到 app store 之后,还是不能收到后台推送的通知。 解决办法如下: 按照我上面的方式,正确配置开发环境证书和生产环境证书。...以上是我配置极光推送的时候遇到的一些问题,记录下来,希望遇到类似问题的小伙伴,可以帮助你解决遇到的问题。? 至此极光推送告一段落。

    2.9K21

    iOS开发UINavigation系列四——导航控制器UINavigationController

    :(BOOL)animated; //压入新的视图控制器 - (void)pushViewController:(UIViewController *)viewController animated:(...:(UIViewController *)viewController animated:(BOOL)animated;  //直接pop到根视图控制器,返回所有被pop的controller - (nullable... UIViewController *visibleViewController; 上面两个方法的区别在于,topViewController是返回被push出的最后一个controller,但是如果之后又有...//iOS7之后导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效 @property(nullable, nonatomic, readonly) UIGestureRecognizer... *interactivePopGestureRecognizer; 四、iOS8后导航的新特性 //这个方法是为了iOS方法的命名统一,导航中,其作用和push一样 - (void)showViewController

    1.8K20

    iOS导航栏切换界面时隐藏和显示

    引 现如今很多App的一些模块,尤其是个人中心模块,界面设计已经习惯于不保留导航栏,而是直接将界面背景覆盖到状态栏,比如QQ的个人信息界面: 没有传统的导航栏之后会好看很多,但是回到或者去往别的页面时...,往往又需要重新显示导航栏,关于这样一种设计苹果并没有给出专门的设置,需要我们自己来做,但在尝试了多种方法之后其实也没有很好的方法,QQ其实做的挺好的,如果你现在动手去尝试一下,会发现它的有无导航栏转换之间有一个渐变的毛玻璃效果...代码如下: - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController...setNavigationBarHidden:YES animated:YES]; } - (void)viewWillDisappear:(BOOL)animated { [super...viewWillDisappear:animated]; [self.navigationController setNavigationBarHidden:NO animated:

    3.9K30
    领券