2014-02-18 65 views
0

我試圖創建一個非常簡單的應用程序,它顯示了UITableView中的歌曲列表。用戶可以選擇一首歌曲並開始播放歌曲。我還沒有實現AVAudioPlayer。我不想處理那件事。現在我只使用測試NSLog語句來測試tableView:didSelectRowAtIndexPath:方法。這是我的代碼。單個UITableViewCell的標識符?

- (void) tableView: (UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
if (indexPath.section == 0) { 
    switch (indexPath.row) { 
     case 0: 
      NSLog(@"Play Stay"); 
      break; 
     case 1: 
      NSLog(@"Play She Was Young"); 
      break; 
     case 2: 
      NSLog(@"Play Zombie Song"); 

     default: 
      break; 
    } 
} else { 
    //Uh oh I did not create this section.} 

} 

注意這些單元格是以編程方式創建的。我在界面生成器中有一個原型單元,這三個是以編程方式構建的。這些不是靜態單元格。他們是動態細胞。

事情是我敢肯定,這樣做一定有更好的方法。如果我改變任何這些單元格的順序,那麼NSLog語句將與單元格右邊的UILabel不匹配?什麼是更好的方式來編碼?也許爲每個單元格創建一個字符串ID。但是,我應該在哪裏存儲字符串ID?我應該將它存儲爲TableViewCell.h的@property嗎? 你如何爲每個細胞做一個標識符?

我看到一個非常好的解決方案here但我不能使用它,因爲我沒有一個靜態單元來創建一個IBOutlet。

回答

1

代替使用在- (void) tableView: (UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

例如在定製單元u的使用財產以後像本身中的方法獲得的細胞的信息,SONGNAME,和songPath(存儲路徑) 它僅是一個例子, u的有在標籤的自定義單元格出口,我把將要使用的標籤細胞

@interface CustomCell : UITableViewCell 
    @property (nonatomic, retain) NSString *SongName;//to hold the song name 
    @property (nonatomic,retain) NSString *SongPath;//put this it may help for your song detection 


內串

在視圖控制器

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CustomCell *cell = (CustomCell *) [tableView cellForRowAtIndexPath:indexPath];//you can get the cell itself and all associated properties for the cell after rearranging it won't change 
    NSString *songName = cell.SongName; 
    NSLog(@"%@",songName); 
    //suppose u want to get to paly use the information in the cell 
    //cell.SongPath ->gives the url(location of file) use it to paly song 



}