[UIImageView setText:]:нераспознанный селектор отправлен в экземпляр
-
13-12-2019 - |
Вопрос
Извините, если уже спрашивали, но вот проблема:
Я получаю это сообщение, когда быстро прокручиваю tableView:
Закрытие приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина:'-[UIImageView setText:]:нераспознанный селектор отправлен в экземпляр 0x8a8f8d0'
Вот мой код:
NewsVideoCell *cell = [tableView dequeueReusableCellWithIdentifier:AudioCellIdentifier];
if (cell == nil) {
cell = [[NewsVideoCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:AudioCellIdentifier];
}
cell.backgroundView = [ [UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"news_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 0, 10, 0)] ];
cell.selectedBackgroundView = [ [UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"news_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 0, 10, 0)] ];
UILabel *cellLabel = (UILabel *)[cell viewWithTag:1];
[cellLabel setText:[masjid objectForKey:@"name"]];
UILabel *cellDate = (UILabel *)[cell viewWithTag:2];
[cellDate setText:[[news objectAtIndex:indexPath.row] objectForKey:@"date"]];
UIImageView *cellImage = (UIImageView *)[cell viewWithTag:3];
NSString *imagePath = [masjid objectForKey:@"thumb"];
[cellImage setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@", imagePath]]];
UITextView *cellText = (UITextView *)[cell viewWithTag:5];
NSString *postText = [[news objectAtIndex:indexPath.row] objectForKey:@"title"];
[cellText setText:postText];
...
И строка, которая запускает это исключение:
[cellText setText:postText];
Я видел, что это связано с чрезмерным удержанием или недостаточным освобождением, но не нашел способа это исправить.
любая помощь, плз?
Решение
UITextView *cellText = (UITextView *)[cell viewWithTag:5];
.
В этой строке кода ваш тег для UITExtView - это «5», я думаю, что у вас может дать диффунтный идентификатор для этого представления.Сначала.
У меня была проблема Similler .... Я обнаружил, что мой тег был разной для TextView и представление изображения.
Как изменить тег для просмотра?
Сначала выберите вид (т.е. ueTxtView), а затем перейдите в вкладку инспектора атрибута ..... под «представлением» вы найдете «тег», напишите там 5.
Я надеюсь, что это может быть полезно для вас.
Другие советы
setText
это UITextView
метод не UIImageView
.Теперь, как упоминалось в комментарии, cellText не является UITextView
например, это кажется UIImageView
например, тогда вы пытаетесь позвонить setText
метод из UIImageView
экземпляр, который приводит к сбою приложения.Попробуйте протестировать его, чтобы убедиться:
UITextView *cellText = (UITextView *)[cell viewWithTag:5];
if([cellText class] != [UITextView class]){
cellText = [[UITextView alloc]init];
}
NSString *postText = [[news objectAtIndex:indexPath.row] objectForKey:@"title"];
[cellText setText:postText];
Таким образом, если cellText
не является UITextView
например, он инициирует его для вас.