2016-10-31 11 views
0

私は私のソケットioでチャットページを作っています。着信メッセージと着信メッセージの2つのメッセージがあります。UITableViewCellがランダムに消えます

私はVARを持っているが、このようなコンテンツを保存するどのChatTextと呼ば:

[[ "こんにちは、どのようにあなたは?"、 "0"]、[ "私は良いです、あなたはどう? 」、 『1』]]

0 =送信され

と1 =は、だから私は送信され、受信したメッセージやラベルにそれらを設定されている1知っているし、彼らに

のスタイルを設定することができます

を受け

Iこれが正しいかどうかは分かりませんが、インターネットで検索してもあまり情報が見つからないので、このようにしました。間違っているか教えてください。この問題を解決する方法を教えてください。

これはこれまでのところ、私は問題があることが必要だと思うところ私が持っている私のコードです:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 

    let cell = tableView.dequeueReusableCellWithIdentifier("chatCell", forIndexPath: indexPath) as? TableChatCell 


    cell!.selectionStyle = UITableViewCellSelectionStyle.None 


    let ChatTextFixed = self.ChatText[indexPath.row] as NSArray 
    if ChatTextFixed.count > 0 { 
     if ChatTextFixed[1] as! Int == 0 { 
      cell!.ChatLableS.text = ChatTextFixed[0] as? String 
      cell!.RView.hidden = true 
     } 

     if ChatTextFixed[1] as! Int == 1 { 
      cell!.ChatLableR.text = ChatTextFixed[0] as? String 
      cell!.SView.hidden = true 
     } 
     print(ChatTextFixed) 
    } 

    cell!.ChatLableS.textColor = UIColor.whiteColor() 
    cell!.ChatLableR.textColor = UIColor.blackColor() 

    return cell! 
} 

注:条件ならば、私はこれらを削除する場合:

if ChatTextFixed[1] as! Int == 0 {} 
if ChatTextFixed[1] as! Int == ! {} 

と1枚のラベルにテキストを設定しますそれだけでは、このように動作します:

cell!.ChatLableS.text = ChatTextFixed[0] as? String 
cell!.RView.hidden = true 

UPDATE

問題は

cell!.RView.hidden = true 
cell!.SView.hidden = true 

のですが、どのように私は他のラベルを非表示にし、一つだけを表示することができます!

答えて

0

enter image description here

let cell = tableView.dequeueReusableCellWithIdentifier("MyCell") as! MyTableViewCell 

    let ChatTextFixed = ChatText[indexPath.row] 
    if let index = Int(ChatTextFixed[1]) where index == 0 { 
     cell.ChatLableS.text = ChatTextFixed[0] 
     cell.ChatLableR.hidden = true 
     cell.RView.hidden = true 
    } else { 
     cell.ChatLableR.text = ChatTextFixed[0] 
     cell.ChatLableS.hidden = true 
     cell.SView.hidden = true 
    } 

    cell.ChatLableS.textColor = UIColor.whiteColor() 
    cell.ChatLableR.textColor = UIColor.blackColor() 

    return cell 
+0

でも、新しいデータを置くことができますが、スクロールすると5つ以上のメッセージが表示されたり、新しいデータが挿入された場合でも隠されてしまいます。 –

+0

私は問題が再利用可能なセルだと思って、すべてのビューとラベルを非表示にしてから、他のブロックに各コンポーネントを表示してみてください –

0

私はなぜ知らないが、このように私のコードを変更すると動作します:

 if ChatTextFixed[1] as! Int == 0 { 
      cell!.ChatLableS.text = ChatTextFixed[0] as? String 
      cell!.ChatLableR.text = "" 
      cell!.RView.backgroundColor = UIColor.whiteColor() 
      cell!.SView.backgroundColor = UIColor(red: 69/225, green: 189/225, blue: 120/225, alpha: 1.0) 
      //cell!.RView.hidden = true 
     } 

     if ChatTextFixed[1] as! Int == 1 { 
      cell!.ChatLableR.text = ChatTextFixed[0] as? String 
      cell!.ChatLableS.text = "" 
      cell!.SView.backgroundColor = UIColor.whiteColor() 
      cell!.RView.backgroundColor = UIColor(red: 200/225, green: 200/225, blue: 200/225, alpha:1.0) 
      //cell!.SView.hidden = true 
     } 

ので、私は葯lableに1つのlableとセット「」にテキストを設定し、非表示それは完璧に動作しますが、私はなぜ考えていません!、それがこのように働くまで遊ぶだけでした!

関連する問題