私はチャットアプリケーションで作業しています。私はスクロールするときにtableview
をリロードしたくありません。スクロール中にテーブルビューの再読み込みを無効にする
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
@try {
static NSString *[email protected]"cell";
MessageCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell==nil)
{
cell=[[MessageCell alloc]initMessagingCellWithReuseIdentifier:cellIdentifier];
}
if(self.check)
{
cell.sent=YES;
cell.messageLabel.text=[self.sendArray objectAtIndex:indexPath.row];
}
else
{
cell.sent=NO;
cell.messageLabel.text=[self.sendArray objectAtIndex:indexPath.row];
}
[email protected]"27-04-2016";
cell.backgroundColor=[UIColor clearColor];
return cell;
}
@catch (NSException *exception) {
NSLog(@"Error in func:%s, line:%d with reason:%@",__func__,__LINE__,exception.reason);
}
}
私はそれを右に示したメッセージを送信する(self.check
がYES
である)、そして私はそれが左側に示したメッセージを受け取る(self.check
がNO
である)が、私はscrolling
だときに問題があり、 tableview
は自分自身をリロードし、self.check
がNO
なので、左にメッセージ全体(送信または受信)を表示します。
どうしたらいいですか?
self.checkは配列で、各行に固有の値でなければなりません。次のようにチェックすることができます:if(self.check [indexPath.row]) –
self.checkは、そのメッセージが送信または受信されたことだけを検出するBOOLです。 –
はい、しかし、あなたはself.checkが常にNOであると言っています。それは、あなたが自分の自己をチェックしていないように見えるからです。 cellForRowAtIndexPath:が呼び出されるたびにself.checkをチェックするか、self.checkの配列に各行の特定の値を設定する必要があります。 –