2014-09-03 41 views
0

我有一個問題,試圖顯示專輯&由某個藝術家在tableView中的各自的歌曲,按部分和行中的歌曲分開專輯標題。結構UITableView與自定義iPod庫

我使用這個代碼通過這個特定的藝術家,使一個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

你要實現你的視圖控制器的UITableViewDataSource協議。

指定的段數爲numberOfSectionsInTableView:。這將是陣列中唯一相冊的數量。可選地,標題爲sectionIndexTitlesForTableView:的每個部分。

然後,您可以使用tableView:numberOfRowsInSection:獲取該專輯中的歌曲數量,並使用tableView: cellForRowAtIndexPath:爲每首歌曲組合一個單元格。

您可能想要使用tableView:titleForHeaderInSection:來爲藝術家的名稱標題。

順便說一下,您可以閱讀所有這in the iOS docs

然而,既然你正在構造你的數據,所以最好使用鋸齒狀的2D數組 - 基本上是一個專輯陣列,每個專輯都是自己的歌曲數組 - 或者更好的是用你的自己的班級。想象一下Artist對象有一個Album對象的數組,每個對象都有一個專輯標題和一個Song對象數組。

+0

感謝您的回覆。我熟悉UITableViewDataSource,我的問題是這個結構,你談到了,一個鋸齒狀的二維數組。你介意給我一些簡單的代碼示例嗎?我真的被困在這... – 2014-09-03 20:26:46

+0

你嘗試過嗎?(谷歌搜索?)(https://www.google.com/search?q=jagged+nsarray&gws_rd=ssl#q=jagged+array+objective+c)沒有什麼能夠阻止你將一些'NSArray'放到'NSArray'中。或者,如你所見,使用'NSMutableArray'。 – Gutblender 2014-09-04 13:35:01