0

すでに質問されている場合は申し訳ありませんが、ここで問題が発生します。

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];

過剰保持または不足解放が原因であることがわかりましたが、それを修正する方法が見つかりません。

何か助けてください。

4

2 に答える 2

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

このコード行では、UITextView の TAG は「5」です。この View に異なる ID を指定した可能性があります。初め 。

私は似たような問題を抱えていました....私のタグが TextView と Image View で異なることがわかりました。

ビューのタグを変更するには?

最初にビュー (つまり UITextView) を選択し、[属性インスペクタ] タブに移動します。[ビュー] の下に「TAG」と書かれています 5.

于 2016-04-26T05:23:19.843 に答える
0

setTextUITextView方法ではありませんUIImageView。コメントで述べたように、cellText はインスタンスではなく、UITextViewインスタンスのようです。インスタンスからメソッドUIImageViewを呼び出そうとすると、アプリがクラッシュします。テストして次のことを確認してください。setTextUIImageView

   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 に答える