tableView: UITableView, numberOfRowsInSection 调用不了?

2015-11-18 15:44:57 +08:00
 a379395979
```swift
var weibos: [
Int] =[];


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print("条数\(weibos?.count)");
return weibos?.count ?? 0

}

func loadData(){
//WeiboModel.loadData(0, max_id: 0) { (list, error) -> () in
self.weibos = [1];
print(self.weibos);
print(self.weibos?.count);
self.tableView.reloadData();
//}
}
```

以上 uitableview 的代理方法, app 启动的时候,能输出 “条数 1 ”
但是 如果将 WeiboModel.loadData 注释去掉,
函数里的代码还是能执行 print(self.weibos); 等于 1
但是 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) 这个代理方法就执行不了,导致页面表格出不来。。。
甚至我延迟 10 秒执行 print(self.weibos?.count);self.tableView.reloadData();,表格还是出不来。数组里 weibos 是有值的。。

为什么加了这个函数 WeiboModel.loadData 之后 self.tableView.reloadData()就不起作用了。里面只是封装了一个 AFNetworking 的请求而已。。。
5342 次点击
所在节点    iDev
6 条回复
jackisnotspirate
2015-11-18 16:44:19 +08:00
看先你的 weiboModel
a379395979
2015-11-18 16:56:32 +08:00
@jackisnotspirate

// WeiboModel 的一个 func
class func loadData(since_id: Int, max_id: Int, finished: (list: [WeiboModel]?, error: NSError?)-> ()) {
NetworkTool.shareNetworkTool.loadWeibo(since_id, max_id: max_id) { (result, error) -> () in
// 判断是否有错误
if error != nil {
print("加载微博数据出错:\(error!)")
finished(list: nil, error: error)
}
// 获取返回数据里的微博数据
if let array = result?["statuses"] as? [[String : AnyObject]] {
// 创建模型数组
var list : [WeiboModel] = [];
for dict in array {
// 字典转模型并添加到模型数组中
list.append(WeiboModel(dict: dict))
}
finished(list:list,error:nil);
} else {
// 没有加载到数据
finished(list: nil, error: nil)
}
}
}
tane05
2015-11-18 17:49:24 +08:00
条件反射 delegate 设了没?是主线程没?
zepto
2015-11-18 19:27:29 +08:00
self.tableView.reloadData() 理论上需要在主线程中进行
a379395979
2015-11-18 20:19:01 +08:00
https://github.com/iScript/swift-project/blob/master/ySeed/HomeViewController.swift
这是代码,哪位大神帮忙看看啊。。

数组里是有值的, reloadData()就是不行。。 注释掉 WeiboModel.loadData(0, max_id: 0) { (list, error) -> () in , reloadData()就可以了。。 数组是同样的值。都写死了。
sablib
2015-11-22 23:58:31 +08:00
如果是注释掉 WeiboModel.loadData 就好了的话,很有可能是因为你的那个 loadData 的回调不是在主线程执行的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/237077

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX