У меня есть контроллер родительского контроля и контроллер детского просмотра, и мне нужно, чтобы передавал информацию с кнопки в контроллере Child View обратно в контроллер родительского контроля, чтобы правильный текст tableViewCell
выделен.Использование делегата для передачи информации с кнопки для выделения ячейки
В контроллере родительского контроля, когда ячейка прослушивается, текст ячейки подсвечивается, и на экране появляется контрольный элемент Child View Controller и воспроизводит выбранную песню. Тем не менее, на контроллере Child View есть кнопка прокрутки назад и пропустить вперед, поэтому, когда одна из этих кнопок нажата, и снова отображается контроллер родительского контроля, текст ячейки должен быть выделен для другой ячейки, чем был выделен до ,
Таким образом, я добавил правильный код делегата делегата для каждого контроллера представления, но я не уверен, что лучшая информация для захвата с контроллера детского просмотра, чтобы отправить обратно в контроллер родительского контроля и как его использовать.
Child View Controller:
-(IBAction)indexChanged:(UISegmentedControl *)sender
{
NSURL *musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Blip_Select" ofType:@"wav"]];
AVAudioPlayer *click = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];
switch (self.segmentedControl.selectedSegmentIndex)
{
case 0:
[click play];
[click play];
[musicPlayer skipToPreviousItem];
break;
case 1:
[click play];
if ([musicPlayer playbackState] == MPMusicPlaybackStatePlaying) {
[musicPlayer pause];
} else {
[musicPlayer play];
}
break;
case 2:
[click play];
[click play];
[musicPlayer skipToNextItem];
default:
break;
}
}
Я хотел бы добавить что-то внутри каждого из приведенных выше утверждений переключателя, но я не уверен, что именно будет работать лучше?
Потому что это то, что она выглядит в Родитель View Controller:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
AlbumsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
MPMediaItem *rowItemAlbum = [[albumsArrayForTVC objectAtIndex:indexPath.section] representativeItem];
NSString *albumDetailTitle = [rowItemAlbum valueForProperty:MPMediaItemPropertyAlbumTitle];
MPMediaQuery *albumMPMediaQuery = [MPMediaQuery albumsQuery];
MPMediaPropertyPredicate *albumPredicate = [MPMediaPropertyPredicate predicateWithValue: albumDetailTitle forProperty: MPMediaItemPropertyAlbumTitle];
[albumMPMediaQuery addFilterPredicate:albumPredicate];
NSArray *albumTracksArray = [albumMPMediaQuery items];
MPMediaItem *rowItemSong = [[albumTracksArray objectAtIndex:indexPath.row] representativeItem];
NSString *songTitle = [rowItemSong valueForProperty:MPMediaItemPropertyTitle];
cell.textLabel.text = songTitle;
cell.textLabel.highlightedTextColor = [UIColor brownColor];
return cell;
}
Я знаю, что я хотел бы добавить какой-то метод, и загрузить таблицу, но я не уверен, что лучший путь к этому. Есть идеи? Благодаря!
реализации делегата на вашего ребенка VC, а затем работать с источником данных на родителя VC, затем перезагрузить таблицу, как набор Int, чтобы определить, какая строка подсвечена. – Tj3n
Попробуйте использовать блок как обратный вызов в контроллере просмотра детей. И определите, что делает блок в контроллере родительского представления. – EricXuan
@ Tj3n, что все имеет смысл и было похоже на то, что я тоже думал, но не знал, как сделать часть Int, о которой вы говорите, например, как точно реализовать + 1/-1 в родитель VC я знаю? – SRMR