使用自定义iPod库构建UITableView

时间:2014-09-03 18:46:45

标签: ios objective-c uitableview nsarray ipod

我在尝试显示相册时出现问题&某个艺术家在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;
}

现在我不知道如何在我的tableview中显示该结构,以相册标题和各自的歌曲分开。

任何建议都有效,谢谢

1 个答案:

答案 0 :(得分:0)

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

使用numberOfSectionsInTableView:指定部分的数量。这将是阵列中唯一相册的数量。 (可选)使用sectionIndexTitlesForTableView:标题每个部分。

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

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

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

然而,既然你正在构建你的数据,也许最好使用锯齿状的2D数组 - 基本上是一个专辑数组,每个专辑都是自己的歌曲数组 - 或者更好地用你自己的数据构建它类。想象一个Artist对象,它有一个Album个对象数组,每个对象都有一个专辑标题和一组Song个对象。