【问题标题】:Structure UITableView with custom iPod Library使用自定义 iPod 库构建 UITableView
【发布时间】:2014-09-03 18:46:45
【问题描述】:

我在尝试在 tableView 中显示某个艺术家的专辑和相应歌曲时遇到问题,将专辑标题按部分和行中的歌曲分开。

我正在使用此代码制作一个包含该艺术家所有专辑的 NSArray:

 - (NSArray *)getAlbumsMatchingQuery:(NSString *)query
{
    MPMediaPropertyPredicate *artistNamePredicate = [MPMediaPropertyPredicate predicateWithValue:query forProperty:MPMediaItemPropertyArtist];
    MPMediaQuery *albumQuery = [[MPMediaQuery alloc] initWithFilterPredicates:[NSSet setWithObject:artistNamePredicate]];
    [albumQuery setGroupingType:MPMediaGroupingAlbum];

    /** each index of this array contains a media item collection. 
        each collection contains the media items from the iPod library by a particular artist.
        the elements of the array are sorted by album name.
    **/
    NSArray *albums = [albumQuery collections];

    NSMutableArray *arrayAlbums = [[NSMutableArray alloc] init];

    for (MPMediaItemCollection *album in albums) {
        MPMediaItem *representativeItem = [album representativeItem];
        [arrayAlbums addObject:representativeItem];
    }
    return arrayAlbums;
}

现在我不知道如何在我的表格视图中显示该结构,按专辑标题和相应的歌曲分隔。

任何建议都是有效的,谢谢

【问题讨论】:

    标签: ios objective-c uitableview nsarray ipod


    【解决方案1】:

    您需要在视图控制器中实现UITableViewDataSource 协议。

    numberOfSectionsInTableView: 指定节数。这将是您数组中唯一专辑的数量。或者,使用sectionIndexTitlesForTableView: 为每个部分命名。

    然后您可以使用tableView:numberOfRowsInSection: 表示该专辑中的歌曲数量,并使用tableView: cellForRowAtIndexPath: 为每首歌曲组合一个单元格。

    您可能希望使用tableView:titleForHeaderInSection: 为标题加上艺术家姓名。

    顺便说一句,您可以阅读所有这些in the iOS docs

    但是,既然您是这样构建数据的,那么使用锯齿状的 2D 数组可能会更好——基本上是专辑数组,每张专辑都是自己的歌曲数组——或者更好的是用你自己的结构类。想象一个Artist 对象,它有一个Album 对象数组,每个对象都有一个专辑标题和一个Song 对象数组。

    【讨论】:

    • 感谢您的回复。我熟悉 UITableViewDataSource,我的问题是你谈到的这个结构,一个锯齿状的 2D 数组。你介意给我一些简单的代码示例吗?我真的被困在这...
    • 您尝试过Googling it? 没有什么可以阻止您将少量NSArray 放入NSArray。或者,如您所见,使用NSMutableArray
    猜你喜欢
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 2011-03-27
    • 2020-09-01
    • 1970-01-01
    相关资源
    最近更新 更多