在 iOS 的 UIBubbleTableView 中没有添加数据

Posted

技术标签:

【中文标题】在 iOS 的 UIBubbleTableView 中没有添加数据【英文标题】:Data does not gets added in UIBubbleTableView in iOS 【发布时间】:2016-08-26 08:11:38 【问题描述】:

我是 ios 新手,我正在开发聊天应用程序,我尝试通过 XMPP 接收消息并将收到的消息传递给聊天表视图 (UIBubbleTableView)。 但是当我尝试在表视图数组中添加该消息时,数组变为空,因此数据不会添加到表视图中。

当我尝试在 viewDidLoad 方法中的数组中存储一些硬编码消息时,它会在表格视图中显示这些消息。

以下是我在 XMPP 类中收到消息时调用的方法。

- (void)newMessageReceived:(NSString *)messageContent 

NSBubbleData *newdata = [NSBubbleData dataWithText: messageContent date:      [NSDate dateWithTimeIntervalSinceNow:0] type:BubbleTypeSomeoneElse];
bubbleData1=[[NSMutableArray alloc]init];
[bubbleData1 addObject:newdata];
_bubbleTable.bubbleDataSource=self;

      [_bubbleTable reloadData];


上述方法使用下面给出的XMPP方法接收数据-

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message 



NSString *msg = [[message elementForName:@"body"] stringValue];
NSString *from = [[message attributeForName:@"from"] stringValue];

NSMutableDictionary *m = [[NSMutableDictionary alloc] init];
[m setObject:msg forKey:@"msg"];
[m setObject:from forKey:@"sender"];

ChatController *chat=[[ChatController alloc]init];
[chat newMessageReceived:[m valueForKey:@"msg"]];


我能够在 newMessageRecieved 方法中获取新消息,但不会添加到气泡表视图中。 谁能帮我解决这个问题。任何帮助表示赞赏。

【问题讨论】:

[bubbleData1 addObject:newdata33]; 不应该没有 33 吗?所以[bubbleData1 addObject:newdata]; 你在做异步操作需要回到主线程吗? 如何清除所有异步任务返回主线程?你能告诉我吗? 我确实试过这个 dispatch_async(dispatch_get_main_queue(), ^ [_bubbleTable reloadData]; );但仍然无法正常工作 是的,没错 【参考方案1】:

你必须实现tableView:cellForRowAtIndexPath:

在那里,您应该将内容添加到 UITableViewCell 或其自定义子类,然后它会显示单元格。

Tutorial

【讨论】:

以上是关于在 iOS 的 UIBubbleTableView 中没有添加数据的主要内容,如果未能解决你的问题,请参考以下文章

iOS8 扩展 - 在 iOS 5/6/7 上会发生啥?

如何在 iOS 4 上运行 iOS 5/ARC 项目

UIButton 在 iOS 7 的兼容模式下没有获得 iOS 6 样式

IOS 6 在 ios 7 中开发的应用程序支持?

UITableView 在 IOS 7 与 IOS 6 中的行为不同

保持我的 ios 应用程序在 ios6 中而不是 ios7 中的外观