У меня есть UITableViewController с пользовательской ячейкой прототипа. Внутри ячейки прототипа у меня есть 2 метки и изображение. Они помечены значком 100 для изображения, 101 и 102 для метки. Я пытаюсь получить доступ к этой метки внутри этого методаviewWithTag, возвращающий nil внутри cellForRowAtIndexPath метод
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([indexPath row] == 0) {
static NSString *CellIdentifier = @"InfoCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
UIImageView *albumArtworkImageView = (UIImageView *)[cell viewWithTag:100];
albumArtworkImageView.image = [self getAlbumArtworkWithSize:albumArtworkImageView.frame.size];
UILabel *albumArtistLabel = (UILabel *)[cell viewWithTag:101];
albumArtistLabel.text = [self getAlbumArtist];
UILabel *albumInfoLabel = (UILabel *)[cell viewWithTag:102];
albumInfoLabel.text = [self getAlbumInfo];
return cell;
} else {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
MPMediaQuery *audiobookQuery = [MPMediaQuery audiobooksQuery];
MPMediaPropertyPredicate *albumPredicate = [MPMediaPropertyPredicate predicateWithValue: audiobookTitle forProperty: MPMediaItemPropertyAlbumTitle];
[audiobookQuery addFilterPredicate:albumPredicate];
NSArray *albumTracks = [audiobookQuery items];
NSUInteger trackNumber = [[[albumTracks objectAtIndex:(indexPath.row-1)] valueForProperty:MPMediaItemPropertyAlbumTrackNumber] unsignedIntegerValue];
if (trackNumber) {
cell.textLabel.text = [NSString stringWithFormat:@"%i. %@", trackNumber, [[[albumTracks objectAtIndex:(indexPath.row-1)] representativeItem] valueForProperty:MPMediaItemPropertyTitle]];
} else {
cell.textLabel.text = [[[albumTracks objectAtIndex:(indexPath.row-1)] representativeItem] valueForProperty:MPMediaItemPropertyTitle];
}
if ([self sameArtists]) {
cell.detailTextLabel.text = @"";
} else {
if ([[[albumTracks objectAtIndex:(indexPath.row-1)] representativeItem] valueForProperty:MPMediaItemPropertyArtist]) {
cell.detailTextLabel.text = [[[albumTracks objectAtIndex:(indexPath.row-1)] representativeItem] valueForProperty:MPMediaItemPropertyArtist];
} else {
cell.detailTextLabel.text = @"";
}
}
return cell;
}
}
ЭРВО взглянуть на раскадровке
Этот вопрос я имею линии, где я смотрю на вид из тегов возвращая ноль. Я уже делал этот тип поиска, и я не могу понять, почему они возвращают нуль. Любая помощь будет очень оценена. Я даже не уверен в хорошем способе отладки. Я разработчик C#, пытаясь выучить программирование цели-c/ios. Благодаря!
Измените на '[cell.contentView viewWithTag: 101]'. Все ваши просмотры должны находиться в представлении содержимого ячейки, а не непосредственно в ячейке. – rmaddy
Я пробовал это, но он все еще возвращает ноль. Что-нибудь еще я мог делать неправильно? – user1585542
Откуда вы знаете, что viewWithTag: возвращает nil? Вы подтвердили это с помощью журнала или отладчика? – rdelmar