如何在邮件气泡中添加时间标签?

时间:2015-11-25 08:24:07

标签: ios objective-c swift uicollectionview jsqmessagesviewcontroller

我在我的应用程序中使用JSQMessageController,现在我想在我的气泡中添加时间标签。

here

我在我的目录中搜索,但没有找到图像资源文件夹。但是当我在这里输入图像/资产名称时:

我正在尝试这个:

override func collectionView(collectionView: JSQMessagesCollectionView!, attributedTextForCellBottomLabelAtIndexPath indexPath: NSIndexPath!) -> NSAttributedString! {
    let message: JSQMessage = self.messages[indexPath.item] as! JSQMessage
    return JSQMessagesTimestampFormatter.sharedFormatter().attributedTimestampForDate(message.date)
}

但这不是我想要的。我想将此标签添加到消息泡泡中。

任何建议,甚至用Objective-C编写?

3 个答案:

答案 0 :(得分:1)

请试试这个。它对我有用。

- (UICollectionViewCell *)collectionView:(JSQMessagesCollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{

    JSQMessagesCollectionViewCell *cell = (JSQMessagesCollectionViewCell *)[super collectionView:collectionView cellForItemAtIndexPath:indexPath];

    JSQMessage *message = [jsqmessages objectAtIndex:indexPath.item];
    //cell.messageBubbleTopLabel.text = message.senderDisplayName;
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
   [dateFormat setDateFormat:@"MMM dd, yyyy"];
    NSString *strDate = [dateFormat stringFromDate:message.date];
    cell.cellTopLabel.text = strDate;
    return cell;
}

答案 1 :(得分:0)

如果要添加时间标签,则必须更改JSQMessagesCollectionViewCellOutgoing的xib文件以及Incoming bubbles。

答案 2 :(得分:-1)

我发现的最佳方法是继承JSQMessagesCollectionViewCellIncomingJSQMessagesCollectionViewCellOutgoing。这非常重要,因为库期望其中一种类型,如果直接从JSQMessagesCollectionViewCell继承,则会遇到麻烦。顺便说一句,我复制了现有的JSQMessagesCollectionViewCellOutgoing.xibJSQMessagesCollectionViewCellIncoming.xib并更改/重命名了所有内容,这使我更容易开始自定义单元格。

然后在你的JSQMessagesViewController子类中,在viewDidLoad()中注册单元标识符,如下所示:

    self.outgoingCellIdentifier = [CustomCollectionViewCellOutgoing cellReuseIdentifier];
    self.outgoingMediaCellIdentifier = [CustomCollectionViewCellOutgoing mediaCellReuseIdentifier];

    [self.collectionView registerNib:[CustomCollectionViewCellOutgoing nib] forCellWithReuseIdentifier:self.outgoingCellIdentifier];
    [self.collectionView registerNib:[CustomCollectionViewCellOutgoing nib] forCellWithReuseIdentifier:self.outgoingMediaCellIdentifier];

    self.incomingCellIdentifier = [CustomCollectionViewCellIncoming cellReuseIdentifier];
    self.incomingMediaCellIdentifier = [CustomCollectionViewCellIncoming mediaCellReuseIdentifier];

    [self.collectionView registerNib:[CustomCollectionViewCellIncoming nib] forCellWithReuseIdentifier:self.incomingCellIdentifier];

然后在collectionView:cellForItemAtIndexPath中:您可以访问自定义单元格:

[self.collectionView registerNib:[CustomCollectionViewCellIncoming nib] forCellWithReuseIdentifier:self.incomingMediaCellIdentifier];

回答源链接:https://github.com/jessesquires/JSQMessagesViewController/issues/1233