相关疑难解决方法(0)

如何在调用-reloadData后保留UITableView contentoffset

CGPoint offset = [_table contentOffset];
[_table reloadData];
[_table setContentOffset:offset animated:NO];    //unuseful

//    __block UITableView *tableBlock = _table;
//    [self performBlock:^(id sender) {
//        [tableBlock setContentOffset:offset];
//    } afterDelay:2];
Run Code Online (Sandbox Code Playgroud)

我知道不知道任何被调用的委托方法reloadData.使用afterDelay:2哪种黑客可能太短或太长,所以我该如何实现呢?

uitableview reloaddata ios contentoffset

57
推荐指数
8
解决办法
5万
查看次数

UITableView刷新而不滚动

我有一个_TableView项目,我想设置自动刷新,我不希望它滚动刷新,让我们说用户滚动2页,并刷新trigered - >所以我想把刷新的内容放到表的顶部没有插入用户的滚动

假设用户在第18行,现在_dataSource刷新,所以它取出让我们说4个项目,所以我希望用户留在他的项目上.

实现它的最佳方法是什么?

objective-c uitableview ios

20
推荐指数
5
解决办法
3万
查看次数

更改行时会发生弹跳

毛刺

CoreData用a NSFetchResultController来显示数据UITableView.我有一个问题:UITableView更改contentOffSet.y插入/移动/删除新行的时间.当用户滚动到例如中间时,UITableView当插入新行时弹跳.

复制项目

这个github链接到一个项目,其中包含重现此行为的最小代码:https://github.com/Jasperav/FetchResultControllerGlitch(代码也在下面)

这显示了故障.我站在我的中间,我UITableView不断看到插入新行,无论当前contentOffSet.y.

在此输入图像描述

类似的问题

关注

我也试过切换到,performBatchUpdates而不是begin/endUpdates,也没有解决.

UITableView插入时/删除/移动行时只是应保持不动那些行不可见的用户.我希望这样的东西应该开箱即用.

最终目标

这是我最终想要的(只是复制WhatsApp的聊天屏幕):

  • 当用户完全滚动到顶部(对于WhatsApp这是底部)插入新行时,UITableView应该为新插入的行设置动画并更改当前contentOffSet.y.
  • 当用户未完全滚动到顶部(或底部,取决于插入新行的位置)时,用户看到的单元格在插入新行时不应反弹.这对应用程序的用户体验非常不利.
  • 它应该适用于动态高度单元格.
  • 移动/删除单元格时也会看到此行为.这里有什么问题可以解决吗?

如果a UICollectionView更合适,那就没问题了.

用例

我想复制WhatsApp聊天屏幕.我不确定他们是否使用NSFetchResultController,但除此之外,最终目标是为他们提供确切的用户体验.因此,插入,移动,删除和更新单元格应该按照WhatsApp的方式进行.因此,对于一个工作示例:转到WhatsApp,获取一个不工作的示例:下载项目.

复制粘贴代码

代码(ViewController.swift):

import CoreData
import UIKit

class ViewController: UIViewController, NSFetchedResultsControllerDelegate, …
Run Code Online (Sandbox Code Playgroud)

core-data uitableview nsfetchedresultscontroller ios swift

16
推荐指数
1
解决办法
568
查看次数

UITableView 插入行后滚动到顶部

我有一个可扩展的UITableView. 当部分被点击时,它们会随着动画(滚动)展开或折叠。我的问题是在展开或折叠标题时有一个奇怪的动画。UITableView滚动到顶部,然后转到点击的单元格。此外,当没有扩展单元格时,有时,它不会滚动到顶部,并且顶部标题和顶部视图之间有很大的空间UITableView

我的问题是我需要滚动到扩展部分并摆脱滚动到顶部的错误。

我尝试了以下解决方案,但对我不起作用: insertRows 后防止表视图滚动到顶部

它看起来也与下面的问题相同,但无法弄清楚如何实现它。 为什么我的 UITableView 在插入或删除行时“跳跃”?

我如何切换选择:

func toggleSection(header: DistrictTableViewHeader, section: Int) {
    print("Trying to expand and close section...")
    // Close the section first by deleting the rows
    var indexPaths = [IndexPath]()
    for row in self.cities[section].districts.indices {
        print(0, row)
        let indexPath = IndexPath(row: row, section: section)
        indexPaths.append(indexPath)
    }

    let isExpanded = self.cities[section].isExpanded
    if(isExpanded){
        AnalyticsManager.instance.logPageEvent(screenName: analyticsName!, category: "Button", action: Actions.interaction, label: "\(self.cities[section].name) Collapse Click")
    }else{
        AnalyticsManager.instance.logPageEvent(screenName: analyticsName!, category: "Button", action: Actions.interaction, …
Run Code Online (Sandbox Code Playgroud)

uitableview ios swift

5
推荐指数
1
解决办法
1636
查看次数