我的问题可能看起来很简单,但它不起作用。我搜索了很多并尝试了很多方法,但它并不想要工作!
所以,我有一个UITableView。在后台我的一个函数工作和检测,如果收到一条新消息,它会将此值写入Core Data,我想在收到新消息时在我的单元格上添加徽章。
但是当我尝试这个时:
func reloadTableView() {
dispatch_async(dispatch_get_main_queue(),{
self.tableView.reloadData()
})
}
它不会更新我的tableView,也不会显示新的徽章。为此,我需要:
在这些情况下,它会显示我的徽章。
那么,我怎样才能更新我的tableView以显示新添加的徽章而不用上述两种方法?
更新
更新2
我有2个文件:ContactsTableViewController和Messages.swift。
在我的Messages.swift中,我处理新消息,当我收到新消息时,我会收到日志:
print("New message for \(user.jidStr)")
ContactsTableViewController().reloadTableView()
在我的ContactsTableViewController中:
func reloadTableView() {
self.tableView.reloadData()
print("updated")
}
重新加载我的tableView,因为我在日志中收到updated
消息,但它没有更新它和我的徽章
答案 0 :(得分:2)
尝试仅更新接收新消息的单元格:
var app =angular.module('PhoneCat',[]);
app.factory('info', ['$http', function($http){
var data = {};
data.getInfo = $http.get('http://cdn.rawgit.com/angular/angular-phonecat/master/app/phones/phones.json')
.success(function(data){
return data;
})
.error(function(err){
return err;
});
return data;
}]);
app.controller('HomeController', ['$scope','info',
function($scope, info) {
info.getInfo.then(function(res){
$scope.datar = res.data;
});
}]);
其中self.tableView.beginUpdates()
self.tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow: row, inSection: section)], withRowAnimation: UITableViewRowAnimation.Fade)
self.tableView.endUpdates()
- 接收消息的单元格中的行
答案 1 :(得分:1)
Objective-C中的示例:
[_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
Swift 2.0中的示例:
self.tableView.reloadRowsAtIndexPaths([NSIndexSet, indexSetWithIndex:0], withRowAnimation: UITableViewRowAnimation.Automatic)
答案 2 :(得分:0)
您是否尝试过NSOperationQeue?
gcc-5 -o foo foo.c -I -DDEBUG.
> ./foo
hello world
编辑(因为我无法发表评论)
func reloadTableView() {
NSOperationQueue.mainQueue().addOperationWithBlock {
self.tableView.reloadData()
})
}
如果你正在使用这样的东西,你每秒都会调用更新功能,这没有意义。您应该在获取数据后调用它
答案 3 :(得分:0)
reloadData应该可以工作......(我认为最好在主线程上调用它。)
您是否检查过您的对象数组是否正确?如果它来自CoreData请求,它可能使用缓存。确保已同步CoreDataContext(通过在插入后调用上下文中的save方法)并且fetch返回最后创建的对象。
只是一个猜测......