UITableViewCell随机消失

时间:2016-10-31 00:39:43

标签: ios swift uitableview swift2.3

所以我在使用socket io中创建了一个聊天页面,我有2个标签用于传入和传出消息。

我有一个名为ChatText的var,它将存储如下内容:

  

[["嗨,你好吗? "," 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

但我怎么能隐藏另一个标签并只显示一个标签!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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
        }

所以我将文字设置为一个标签并设置""对于花药然后隐藏它,它完美地工作,但我不知道为什么!,只是必须玩,直到它像这样工作!。