0

很抱歉,如果它已经被问过,但问题来了:

当我快速滚动 tableView 时收到此消息:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UIImageView setText:]: unrecognized selector sent to instance 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];

我看到这是由于过度保留或释放不足,但我没有找到解决方法。

有什么帮助吗?

4

2 回答 2

1
UITextView *cellText = (UITextView *)[cell viewWithTag:5];

在这行代码中,您 UITextView 的 TAG 是“5”,我认为您可能为此 View 提供了不同的 ID。第一的 。

我有类似的问题....我发现我的标签对于 TextView 和 Image View 是不同的。

如何更改视图的标签?

首先选择视图(即 UITextView),然后转到属性检查器选项卡.....在“视图”下,您会发现“标签”写在那里 5。

于 2016-04-26T05:23:19.843 回答
0

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实例,它将为您初始化一个。

于 2013-04-29T12:36:54.267 回答