0

ソケットioを使用してチャットページを作成しているので、着信メッセージと発信メッセージ用に2つのラベルがあります。

次のようなコンテンツを保存する ChatText という変数があります。

[["こんにちは、お元気ですか?", "0"], ["元気です, あなたはどうですか?", "1"]]

0 = 送信済み、1 = 受信済み

そのため、送信されたメッセージと受信されたメッセージを把握し、それらをラベルに設定してスタイルを設定できます

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

これは私がこれまでに持っていた私のコードで、問題は次のとおりです。

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 条件を削除すると:

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

テキストを1つのラベルのみに設定すると、次のように機能します。

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

アップデート

問題の原因は

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

しかし、他のラベルを非表示にして 1 つだけを表示するにはどうすればよいですか?

4

2 に答える 2

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
        }

だから私はテキストを1つのラベルに設定し、「」を別のラベルに設定してから非表示にしました.これは完全に機能しますが、理由はわかりません.

于 2016-11-01T01:40:09.567 に答える