[UIImageView setText:]:发送到实例的无法识别的选择器

时间:2012-07-28 03:34:17

标签: ios uiimageview selector settext

如果已经被问过我很抱歉,但问题出现了:

当我快速滚动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];

我看到这是由于过度保留或发布不足,但我找不到解决方法。

任何帮助PLZ?

2 个答案:

答案 0 :(得分:1)

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

在这行代码中,你的TAG for UITextView是" 5",我想你可能已经为这个View提供了不同的ID。首先。

我有similler问题....我发现我的Tag对于TextView和Image View来说是不同的。

  

如何更改视图的TAG?

     
    

首先选择View(即UITextView),然后转到属性检查器选项卡.....在'查看'你会发现' TAG'写在那里     5。

  

我希望它对你有所帮助。

答案 1 :(得分:0)

setTextUITextView方法,不是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个实例,它会为您启动一个。