gpt4 book ai didi

objective-c - 核心数据支持的 UITableView 中的非核心数据数据

转载 作者:可可西里 更新时间:2023-11-01 04:42:54 25 4
gpt4 key购买 nike

看看 Music.app(或 iPod.app)。根专辑 View 有一个“所有歌曲”行。根歌曲 View 有一个“随机播放”行。根播放 ListView 有一个“添加播放列表...”行。静态数据与(大概)核心数据数据混合在同一个 UITableView 中。我想知道 Apple 是如何做到这一点的。

我尝试了两种不同的方法,但都失败了。与 Music.app 一样,我的 View 在 tableHeaderView 中也有一个 UISeachBar。我的第一次尝试跟踪我有多少“静态”行,并调整了提供给需要部分和行信息的各种 UITableView 和 NSFetchedResultsController 方法的 indexPath。在我实现 NSFetchedResultsControllerDelegate 方法以允许创建、编辑和删除之前,一切都运行良好。 insertRowsAtIndexPaths:withRowAnimation: 方法(和类似方法)在我调整后的 indexPaths 上被绊倒了。默认的 indexPaths 也不能正常工作。

我的第二次尝试是在我的主要 UITableView 的 tableHeaderView 中嵌套另一个 UITableView 以用于静态行(并将 UISeachBar 放在它自己的 tableHeaderView 中)。这种方法甚至没有进入可编辑阶段。 UISearchBar 最终被根 UITableView 的 sectionIndex 洗涤器重叠,并且在滚动短列表时不再向上滑动到 UINavigationBar 后面。

因此,我不是要诊断我的具体问题,而是要就 Apple 如何实现这一点征求建议。他们是否可以一次获取数据,将其缓存在 NSArray 中并构建一个包含静态和核心数据行的部分和行的嵌套 NSArray?

最佳答案

我最近遇到了同样的问题。我想在表格顶部添加一行,其中包含一些静态内容(所有歌曲)。我通过简单地为第 0 部分插入我自己的部分,然后递增核心数据部分来解决这个问题。 0 变成 1,1 变成 2,等等。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [_fetchedResultsController sections] + 1;
}

- (NSInteger)tableView:(UITableView *)tv numberOfRowsInSection:(NSInteger)section {
if( section == 0 ) {
return 1;
}
id <NSFetchedResultsSectionInfo> sectionInfo = [[_fetchedResultsController sections] objectAtIndex:section-1];
return [sectionInfo numberOfObjects];
}

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// All Charts
if( indexPath.section == 0 && indexPath.row == 0 ) {
// Set up the custom cell
}
// Sets
else {
// Set up the core data cells
}
}

剩下的只是在删除行等时调整 indexPath 部分的问题。

关于objective-c - 核心数据支持的 UITableView 中的非核心数据数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4342224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com