如果已经被问过我很抱歉,但问题出现了:
当我快速滚动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?
答案 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)
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
个实例,它会为您启动一个。