我在尝试显示相册时出现问题&某个艺术家在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中显示该结构,以相册标题和各自的歌曲分开。
任何建议都有效,谢谢
答案 0 :(得分:0)
您需要在视图控制器中实现UITableViewDataSource
协议。
使用numberOfSectionsInTableView:
指定部分的数量。这将是阵列中唯一相册的数量。 (可选)使用sectionIndexTitlesForTableView:
标题每个部分。
然后,您可以使用tableView:numberOfRowsInSection:
表示该专辑中的歌曲数量,然后tableView: cellForRowAtIndexPath:
将每首歌曲的单元格组合在一起。
您可能希望使用tableView:titleForHeaderInSection:
标题为艺术家姓名的标题。
顺便说一句,你可以阅读所有这些in the iOS docs。
然而,既然你正在构建你的数据,也许最好使用锯齿状的2D数组 - 基本上是一个专辑数组,每个专辑都是自己的歌曲数组 - 或者更好地用你自己的数据构建它类。想象一个Artist
对象,它有一个Album
个对象数组,每个对象都有一个专辑标题和一组Song
个对象。