0

複数のテスト メッセージを追加すると、そのうちの 2 つだけが画面に表示されます。他のメッセージはコピーできるのではっきりと表示されていますが、色が表示されていません。スクロールすると、新しい 2 つのテキストが表示されますが、まだ 2 つだけです。以下にいくつかの例を示します。

この画像は、画面が最初にロードされたときを示しています。

この画像は、少しスクロールした後の画面を示しています。

この画像は、メッセージがはっきりと表示されていることを示していますが、バブルは表示されていません。

最初のスクリーンショットは、画面が最初に読み込まれたときを示しています。2番目のショーは、それを動かしたときに表示されます。3 番目は、他のメッセージが存在するが表示されないことを示しています。これを修正する方法についてのアイデアはありますか? また、名前を表示するにはどうすればよいですか?Swiftでこれを行うための良いガイドはありますか?

使用したコードは次のとおりです。

    var messages = [JSQMessage]()

var incomingBubbleImageView = JSQMessagesBubbleImageFactory.incomingMessageBubbleImageViewWithColor(UIColor.jsq_messageBubbleLightGrayColor())
var outgoingBubbleImageView = JSQMessagesBubbleImageFactory.outgoingMessageBubbleImageViewWithColor(UIColor.jsq_messageBubbleGreenColor())

override func viewDidLoad() {
    super.viewDidLoad()

    self.sender = UIDevice.currentDevice().identifierForVendor?.UUIDString

    messages += [JSQMessage(text: "hello", sender: self.sender)]
    messages += [JSQMessage(text: "hello", sender: "other")]
    messages += [JSQMessage(text: "hello", sender: self.sender)]
    messages += [JSQMessage(text: "hello", sender: "other")]
    messages += [JSQMessage(text: "hello", sender: self.sender)]
    messages += [JSQMessage(text: "hello", sender: "other")]

    reloadMessagesView()

}

func reloadMessagesView() {
    self.collectionView?.reloadData()
}

デリゲート メソッドの拡張コードは次のとおりです。

extension TestJSQ {

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    print(self.messages.count)
    return self.messages.count
}

override func collectionView(collectionView: JSQMessagesCollectionView!, messageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageData! {
    let data = self.messages[indexPath.row]
    return data
}

// func collectionView(collectionView: JSQMessagesCollectionView!, didDeleteMessageAtIndexPath indexPath: NSIndexPath!) をオーバーライド { // self.messages.removeAtIndex(indexPath.row)

override func collectionView(collectionView: JSQMessagesCollectionView, bubbleImageViewForItemAtIndexPath indexPath: NSIndexPath) -> UIImageView {

    let data = messages[indexPath.row]
    switch(data.sender) {
    case self.sender:
        return self.outgoingBubbleImageView
    default:
        return self.incomingBubbleImageView
    }

    }

override func collectionView(collectionView: JSQMessagesCollectionView!, avatarImageViewForItemAtIndexPath indexPath: NSIndexPath!) -> UIImageView! {
    return nil
}

}

どんな助けでも大歓迎です!!!

4

1 に答える 1