当前位置: 首页 > 面试题库 >

在iOS Carplay中延迟加载数据

夔桐
2023-03-14
问题内容

用户在Carplay中滚动时如何延迟加载项目?

我正在使用MPPlayableContentDataSource中的beginLoadingChildItems加载
第一组项目,但是当用户滚动到
页面底部时如何调用下一页?


问题答案:

The way you can achieve this is inside the following function:

func beginLoadingChildItems(at indexPath: IndexPath, completionHandler: @escaping (Error?) -> Void)

As Example:

if (indexPath[componentIndex] + 1) % Threshold == 0 { // Threshold is Your Defined Batch Size

    // Load the next corresponding batch

}

Load your lazy data, then call:

completionHandler(nil) // In case of no error has occurred

,but firstly, you need to return the total items count correctly in the
following function:

func numberOfChildItems(at indexPath: IndexPath) -> Int

Something like the below,

class YourDataSource : MPPlayableContentDataSource {

    private var items = [MPContentItem]()
    private var currentBatch = 0

    func beginLoadingChildItems(at indexPath: IndexPath, completionHandler: @escaping (Error?) -> Void) {

        // indexPath[1]: is current list level, as per CarPlay html" target="_blank">list indexing (It's an array of the indices as ex: indexPath = [0,1] means Index 0 in the first level and index 1 at the second level).
        // % 8: Means each 8 items, I will perform the corresponding action.
       // currentBatch + 1 == nextBatch, This check in order to ensure that you load the batches in their sequences.

        let currentCount = indexPath[1] + 1

        let nextBatch = (currentCount / 8) + 1

        if currentCount % 8 == 0 && currentBatch + 1 == nextBatch {

            // Load the next corresponding batch 
            YourAPIHandler.asyncCall { newItems in

                self.currentBatch = self.currentBatch + 1

                items.append(newItems)

                completionHandler(nil)

                MPPlayableContentManager.shared().reloadData()

            }

        } else {

            completionHandler(nil)

        }


    }

}

func numberOfChildItems(at indexPath: IndexPath) -> Int {

    return self.items.count

}


 类似资料:
  • 描述 (Description) 延迟加载可应用于图像,背景图像和淡入效果,如下所述 - 对于图像 要在图像上使用延迟加载,请按照给定的步骤进行操作 - 使用data-src属性而不是src属性来指定图像源。 将类lazy添加到图像。 <div class = "page-content"> ... <img data-src = "image_path.jpg" class = "l

  • 我正在使用Mika Tuupola的jQuery延迟加载。 是否可以在每次延迟加载图像后调用函数。 我打算做的是跟踪图像的浏览次数。因此,如果图像是延迟加载的,这意味着用户已经看到了图像,我将通过在后台执行HTTP GET,将数据库中的计数器增加1。

  • 问题内容: 我在JPA实体中的延迟加载属性有问题。我读过许多类似的问题,但它们与spring或hibernate有关,并且他们的后代不适用或没有帮助。 该应用程序是在Wildfly应用程序服务器上运行的JEE和JPA2.1。有两个实体,DAO会话bean和servlet将它们放在一起: 当我运行此代码时,它失败并显示: 我对WebLogic / JPA1使用了非常相似的模式,并且运行平稳。任何的想

  • 问题内容: 我想知道在node.js中使用是否等效于延迟加载? 例如,如果我有一个函数需要代码中其他任何地方都不需要的特定node.js包,那么我最好在该函数内部使用它,以便仅在调用该函数时才包含所需的包。 我还不确定是否会由于缺乏对node.js架构的了解而在性能方面有所改善?我想它每次与服务器的连接都会使用更少的内存。但是,当它必须读取程序包时,它会增加磁盘的I / O吗,还是将其添加到内存中

  • 这是从这里开始的后续行动。 我正在实现一个表,它将数据异步加载到表单元格中。问题是,表单元格有时无法正确更新。有时它会以某种方式“挂起”并永远显示“加载...”。实际值只有在我在表中滚动一点时才会更新。 要复制,请在表格中快速向下滚动应用程序。某些单元格不会显示“延迟加载”值,而是显示占位符字符串。 延迟加载属性如下所示: } 应用程序如下所示: 完整的可运行代码可以在这里找到。

  • 有很多关于“懒惰”的例子和文档。也许我没有明白,但为什么要用它呢?实例化bean成本