2014-02-18 2 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 в ячейке справа? Каков лучший способ кодировать это? Возможно, создайте идентификатор строки для каждой ячейки. Но где я должен хранить идентификатор строки? Должен ли я хранить его как @property TableViewCell.h? Как сделать идентификатор для каждой ячейки?

Я видел действительно хорошее решение here, но я не могу использовать его, потому что у меня нет статической ячейки для создания IBOutlet.

ответ

1

вместо того, чтобы использовать информацию в клетке сам по себе, полученной в способе - (void) tableView: (UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

, например, в пользовательской ячейке U использует Somthing, как, songName и songPath (для хранения пути) это всего лишь пример, у имеет выход в пользовательской ячейке для этикеток, я взял строки, которые будут использоваться наклейками внутри клетки

@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 



} 


Смежные вопросы