作者strife00 (strifecloud)
看板MacDev
标题Re: [问题] 想问有关UIRefreshControl
时间Thu Aug 6 20:55:53 2015
不好意思,经版友提醒,贴上我的loadData function如下:
@IBAction func loadData(){
timelineData.removeAll(keepCapacity: false);
var findTimelineData: PFQuery = PFQuery(className: "Sweets");
findTimelineData.findObjectsInBackgroundWithBlock{
(objects:[AnyObject]!, error: NSError!) -> Void in
if error == nil{
self.timelineData = objects.reverse() as! [PFObject]
self.tableView.reloadData();
}
}
}
并补充Xcode指出错误的行数如下:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell: SweetTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! SweetTableViewCell;
Xcode说这行错了-> let sweet: PFObject = self.timelineData[indexPath.row] as PFObject;
cell.sweetTextView.text = sweet.objectForKey("content") as! String;
cell.titleTextView.text = sweet.objectForKey("title") as! String;
cell.location.setTitle((sweet.objectForKey("location")) as? String, forState: UIControlState.Normal);
可能是这边有问题,但我不太知道是哪边有问题,希望得到解决,感谢!!
※ 引述《strife00 (strifecloud)》之铭言:
: 大家好
: 小弟做了一个UITableViewController,里面UITableViewCell资料是连接Parse取得
: 想用UIRefreshController来做往下拉的更新
: 加入UIRefreshControl後第一次往下拉更新有成功
: 但是第二次再往下拉的话,就会出现“fatal error: Array index out of range”
: 每次我加入新资料後,第一次往下拉更新都成功,但是只要再加入新资料,
: 第二次更新就一定会出现上面的问题,想请问各位大大要如何解决呢?
: (之前还没加入UIRefreshControl时,运作都很正常,
: 我写了一个methods作为更新的按钮之用,但因为这次想用下拉式更新)
: 希望能解决这个问题,感谢
: 我加入UIRefreshControll的程式码如下:
: viewDidLoad() {
: super.viewDidLoad()
: self.refreshControl = UIRefreshControl();
: self.refreshControl?.attributedTitle = NSAttributedString(string: "Pull to refresh");
: self.refreshControl?.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
: }
: func refresh(sender:AnyObject){
: println("refresh")
: self.loadData();
: self.refreshControl?.endRefreshing();
: }
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.193.38.214
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1438865756.A.9F4.html
※ 编辑: strife00 (123.193.38.214), 08/06/2015 21:23:26
1F:→ darktt: 请提供XCode报错的讯息内容, 08/06 21:55
2F:→ darktt: 另外PFObject有符合KVC架构 所以可以直接使用sweet["Key"] 08/06 21:56
3F:→ darktt: 不过还是建议将一个DB的Table建立一个Class会比较好管理 08/06 21:57
4F:→ darktt: 当你有数个Table与数十个Column的时候,你会感谢你之前的 08/06 21:58
5F:→ darktt: 努力的 08/06 21:58
6F:→ howdiun: 可能是indexPath.row的数值超过array的大小 08/07 09:21
7F:→ gradyzhuo: 会发生这种情况 通常是你存data的Array太早清空了 UICo 08/08 14:14
8F:→ gradyzhuo: ntrol的触发有一个奇特的状况 他会假定你的资料存在的 08/08 14:14
9F:→ gradyzhuo: 状况下 重跑一次tableView:cellForIndexPath: 而且是 08/08 14:14
10F:→ gradyzhuo: 跳过numberOfRowInSection: 所以回到你的状况 你的time 08/08 14:14
11F:→ gradyzhuo: lineData.removeAll 太早做了 你的状况可以试试看把那 08/08 14:14
12F:→ gradyzhuo: 行注解掉 再执行看看 08/08 14:14
13F:→ gradyzhuo: 更正: UIControl->UIRefreshControl 08/08 14:15
14F:推 gradyzhuo: 补充一下 主词没说清楚 「他会假定你的资料存在的...」 08/08 14:19
15F:→ gradyzhuo: 这里的他是TableView 08/08 14:19
16F:→ strife00: 解决问题了!感觉大大们的建议! 08/12 15:19
17F:→ strife00: 把.removeAll那行移到下面的if里就可以正常运作了 08/12 15:20