Swift 解析:加载对象/在拉动刷新后刷新tableview

Swift 解析:加载对象/在拉动刷新后刷新tableview,swift,parse-platform,pull-to-refresh,Swift,Parse Platform,Pull To Refresh,Swift 我正试图使它成为这样,当你拉刷新tableview时,它会用Parse.com上存储的数据更新tableview 我对此进行了研究,似乎需要使用loadObjects() 当我把它放进去时,它说:“使用未解析的标识符‘loadObjects’” 不确定这是不是我需要的 这是我的ViewController.swift import UIKit import Parse import Bolts import ParseUI class EventsViewController: U

Swift

我正试图使它成为这样,当你拉刷新tableview时,它会用Parse.com上存储的数据更新tableview

我对此进行了研究,似乎需要使用
loadObjects()

当我把它放进去时,它说:“使用未解析的标识符‘loadObjects’”

不确定这是不是我需要的

这是我的ViewController.swift

import UIKit
import Parse
import Bolts
import ParseUI

class EventsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

var timer: NSTimer!
var isAnimating = false
var currentColorIndex = 0
var currentLabelIndex = 0
var customView: UIView!
var labelsArray: Array<UILabel> = []
var refreshControl: UIRefreshControl!
var testArray = [String]()
var subArray = [String]()

@IBOutlet weak var tableview: UITableView!


@IBOutlet weak var webView: UIWebView!

override func viewDidLoad() {
    super.viewDidLoad()

    tableview.delegate = self
    tableview.dataSource = self

    refreshControl = UIRefreshControl()
    tableview.addSubview(refreshControl)

    loadCustomRefreshContents()

    //refreshControl colors
    refreshControl.backgroundColor = UIColor.clearColor() //color of background
    refreshControl.tintColor = UIColor.clearColor() //color of indicator

    let query = PFQuery(className: "events")
    let runkey = query.orderByDescending("eventTitle")
    runkey.findObjectsInBackgroundWithBlock {
        (objects: [PFObject]?, error:NSError?) -> Void in

        if error == nil {


            if let objects = objects as [PFObject]! {
                for object in objects {

                    let load = object.objectForKey("eventTitle") as! String
                    self.testArray.append(load)

                    let subload = object.objectForKey("date") as! String
                    self.subArray.append(subload)

                    print(self.testArray)
                }

            }
        } else {

            print("error:\(error!) \(error!.userInfo)")
        }

    }
    sleep(3)
    do_table_refresh()

    loadViewIfNeeded()

    loadObjects()

    /*let url = NSURL(string: "https://m.facebook.com/CathedralCityMunicipal")

    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {
        (data, response, error) in

        if error == nil {

            let urlContent = NSString(data: data!, encoding: NSUTF8StringEncoding)

            print(urlContent)

            dispatch_async(dispatch_get_main_queue()) {

            self.webView.loadHTMLString(urlContent! as String, baseURL: nil)

            }

        }
    }

    task.resume()*/

    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func do_table_refresh() {

    dispatch_async(dispatch_get_main_queue()) {

        self.tableview.reloadData()
        return

    }

}

func tableView(tableView:UITableView!, numberOfRowsInSection section:Int) -> Int {
    return testArray.count
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("eventcell", forIndexPath: indexPath) as! EventTableViewCell
    cell.title.text = self.testArray[indexPath.row]
    cell.subTitle.text = self.subArray[indexPath.row]
    return cell
}

//refreshes tableview; starts refresh
func loadCustomRefreshContents() {
    let refreshContents = NSBundle.mainBundle().loadNibNamed("RefreshControl", owner: self, options: nil)

    customView = refreshContents[0] as! UIView
    customView.frame = refreshControl.bounds

    for var i=0; i<customView.subviews.count; ++i {
        labelsArray.append(customView.viewWithTag(i + 1) as! UILabel)
    }

    refreshControl.addSubview(customView)

    do_table_refresh()

}

//stops refresh
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
    do_table_refresh()

    if refreshControl.refreshing {
        if !isAnimating {
            doSomething()
            animateRefreshStep1()
            self.do_table_refresh()
        }
    }
}

//cycles through colors
func getNextColor() -> UIColor {
    var colorsArray: Array<UIColor> = [UIColor.magentaColor(), UIColor.brownColor(), UIColor.yellowColor(), UIColor.redColor(), UIColor.greenColor(), UIColor.blueColor(), UIColor.orangeColor()]

    if currentColorIndex == colorsArray.count {
        currentColorIndex = 0
    }

    let returnColor = colorsArray[currentColorIndex]
    ++currentColorIndex

    return returnColor
}

func doSomething() {
    timer = NSTimer.scheduledTimerWithTimeInterval(4.0, target: self, selector: "endOfWork", userInfo: nil, repeats: true)
    self.do_table_refresh()

}

func endOfWork() {
    refreshControl.endRefreshing()

    self.do_table_refresh()
    timer.invalidate()
    timer = nil
}

//first part of animation
func animateRefreshStep1() {
    isAnimating = true

    UIView.animateWithDuration(0.1, delay: 0.0, options: UIViewAnimationOptions.CurveLinear, animations: { () -> Void in
        self.labelsArray[self.currentLabelIndex].transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4))
        self.labelsArray[self.currentLabelIndex].textColor = self.getNextColor()

        }, completion: { (finished) -> Void in

            UIView.animateWithDuration(0.05, delay: 0.0, options: UIViewAnimationOptions.CurveLinear, animations: { () -> Void in
                self.labelsArray[self.currentLabelIndex].transform = CGAffineTransformIdentity
                self.labelsArray[self.currentLabelIndex].textColor = UIColor.blackColor()

                }, completion: { (finished) -> Void in
                    ++self.currentLabelIndex

                    if self.currentLabelIndex < self.labelsArray.count {
                        self.animateRefreshStep1()
                    }
                    else {
                        self.animateRefreshStep2()
                    }
            })
    })
}

//second part of animation
func animateRefreshStep2() {
    UIView.animateWithDuration(0.35, delay: 0.0, options: UIViewAnimationOptions.CurveLinear, animations: { () -> Void in
        self.labelsArray[0].transform = CGAffineTransformMakeScale(1.5, 1.5)
        self.labelsArray[1].transform = CGAffineTransformMakeScale(1.5, 1.5)
        self.labelsArray[2].transform = CGAffineTransformMakeScale(1.5, 1.5)
        self.labelsArray[3].transform = CGAffineTransformMakeScale(1.5, 1.5)
        self.labelsArray[4].transform = CGAffineTransformMakeScale(1.5, 1.5)
        self.labelsArray[5].transform = CGAffineTransformMakeScale(1.5, 1.5)
        self.labelsArray[6].transform = CGAffineTransformMakeScale(1.5, 1.5)
        self.labelsArray[7].transform = CGAffineTransformMakeScale(1.5, 1.5)
        self.labelsArray[8].transform = CGAffineTransformMakeScale(1.5, 1.5)
        self.labelsArray[9].transform = CGAffineTransformMakeScale(1.5, 1.5)

        }, completion: { (finished) -> Void in
            UIView.animateWithDuration(0.25, delay: 0.0, options: UIViewAnimationOptions.CurveLinear, animations: { () -> Void in
                self.labelsArray[0].transform = CGAffineTransformIdentity
                self.labelsArray[1].transform = CGAffineTransformIdentity
                self.labelsArray[2].transform = CGAffineTransformIdentity
                self.labelsArray[3].transform = CGAffineTransformIdentity
                self.labelsArray[4].transform = CGAffineTransformIdentity
                self.labelsArray[5].transform = CGAffineTransformIdentity
                self.labelsArray[6].transform = CGAffineTransformIdentity
                self.labelsArray[7].transform = CGAffineTransformIdentity
                self.labelsArray[8].transform = CGAffineTransformIdentity
                self.labelsArray[9].transform = CGAffineTransformIdentity

                }, completion: { (finished) -> Void in
                    if self.refreshControl.refreshing {
                        self.currentLabelIndex = 0
                        self.animateRefreshStep1()
                    }
                    else {
                        self.isAnimating = false
                        self.currentLabelIndex = 0
                        for var i=0; i<self.labelsArray.count; ++i {
                            self.labelsArray[i].textColor = UIColor.blackColor()
                            self.labelsArray[i].transform = CGAffineTransformIdentity
                        }
                    }
            })
    })
}

/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
}
*/

}
导入UIKit
导入解析
进口螺栓
导入ParseUI
类事件ViewController:UIViewController、UITableViewDataSource、UITableViewDelegate{
var定时器:NSTimer!
var isAnimating=false
var currentColorIndex=0
var currentLabelIndex=0
var customView:UIView!
var labelsArray:Array=[]
var refreshControl:UIRefreshControl!
var testArray=[String]()
变量子数组=[String]()
@IBVAR表格视图:UITableView!
@ibvar-webView:UIWebView!
重写func viewDidLoad(){
super.viewDidLoad()
tableview.delegate=self
tableview.dataSource=self
refreshControl=UIRefreshControl()
tableview.addSubview(刷新控件)
loadCustomRefreshContents()
//刷新控制颜色
refreshControl.backgroundColor=UIColor.clearColor()//背景颜色
refreshControl.tintColor=UIColor.clearColor()//指示器的颜色
let query=PFQuery(类名:“事件”)
让runkey=query.orderByDescending(“eventTitle”)
runkey.findObjectsInBackgroundWithBlock{
(对象:[PFObject]?,错误:N错误?->中的无效
如果错误==nil{
如果让objects=对象作为[PFObject]{
对于对象中的对象{
将load=object.objectForKey(“eventTitle”)设为!字符串
self.testArray.append(加载)
将subload=object.objectForKey(“日期”)设为!字符串
self.subArray.append(子加载)
打印(self.testArray)
}
}
}否则{
打印(“错误:\(错误!)\(错误!.userInfo)”)
}
}
睡眠(3)
do_表_刷新()
LoadViewIfRequired()
loadObjects()
/*让url=NSURL(字符串:https://m.facebook.com/CathedralCityMunicipal")
让task=NSURLSession.sharedSession().dataTaskWithURL(url!){
(数据、响应、错误)
如果错误==nil{
设urlContent=NSString(数据:data!,编码:NSUTF8StringEncoding)
打印(URL内容)
dispatch\u async(dispatch\u get\u main\u queue()){
self.webView.loadHTMLString(urlContent!作为字符串,baseURL:nil)
}
}
}
task.resume()*/
//加载视图后执行任何其他设置。
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
func do_table_refresh(){
dispatch\u async(dispatch\u get\u main\u queue()){
self.tableview.reloadData()
返回
}
}
func tableView(tableView:UITableView!,numberofrowsinssection:Int)->Int{
返回testArray.count
}
func numberOfSectionsInTableView(tableView:UITableView)->Int{
返回1
}
func tableView(tableView:UITableView,cellForRowAtIndexPath:nsindepath)->UITableView单元格{
让cell=tableView.dequeueReusableCellWithIdentifier(“eventcell”,forIndexPath:indexPath)作为!EventTableViewCell
cell.title.text=self.testArray[indexPath.row]
cell.subTitle.text=self.subArray[indexPath.row]
返回单元
}
//刷新tableview;开始刷新
func loadCustomRefreshContents(){
让refreshContents=NSBundle.mainBundle().loadNibNamed(“RefreshControl”,所有者:self,选项:nil)
customView=将内容[0]刷新为!UIView
customView.frame=refreshControl.bounds
对于变量i=0;i UIColor{
var colorsArray:Array=[UIColor.magentaColor(),UIColor.brownColor(),UIColor.yellowColor(),UIColor.redColor(),UIColor.greenColor(),UIColor.blueColor(),UIColor.orangeColor()]
如果currentColorIndex==colorsArray.count{
currentColorIndex=0
}
让returnColor=colorsArray[currentColorIndex]
++当前颜色索引
返回颜色
}
func doSomething(){
timer=NSTimer.scheduledTimerWithTimeInterval(4.0,目标:self,选择器:“endOfWork”,userInfo:nil,repeats:true)
self.do_table_refresh()
}
func endOfWork(){
refreshControl.endRefreshing()
self.do_table_refresh()
timer.invalidate()
计时器=零
}
//动画的第一部分
func animateRefreshStep1(){
isAnimating=true
animateWithDuration(0.1,延迟:0.0,选项:UIViewAnimationOptions.CurveLinear,动画:{()->Void in
self.labelsArray[self.currentLabelIndex].transform=CGAffineTransformMakeRotation(CGFloat(M_PI_4))
self.labelsArray[self.currentLabelIndex].textColor=self.getNextColor()
},完成:{(已完成)->在中无效
UIView.animateWithDuration(0.05,延迟:0.0,选项:uiviewmanimationoptions.CurveLinear,动画:{()->Void in
self.labelsArray[self.currentLabelIndex].transform=CGAffineTransformity
self.labelsArray[self.currentLabelIndex].textColor=UIColor.blackColor()
},完成:{(已完成)->在中无效
++自选当前标签索引
如果self.currentLabelIndexVoid in
self.labelsArray[0]。transform=CGAffineTransformMakeScale(1.5,1.5)
self.labelsArray[1].transform=CGAffineTransformMakeScale(1.5,1.5)
self.labelsArray[2
func loadEvents () -> Void {

        self.testArray = []
        self.subArray = []

        let query = PFQuery(className: "events")
        let runkey = query.orderByDescending("eventTitle")
        runkey.findObjectsInBackgroundWithBlock {
            (objects: [PFObject]?, error:NSError?) -> Void in

            if error == nil {


                if let objects = objects as [PFObject]! {
                    for object in objects {

                        let load = object.objectForKey("eventTitle") as! String
                        self.testArray.append(load)

                        let subload = object.objectForKey("date") as! String
                        self.subArray.append(subload)

                        //reload TableView
                        self.tableView.reloadData()
                        print(self.testArray)
                    }

                }
            } else {

                print("error:\(error!) \(error!.userInfo)")
            }

        }

        refreshControl.endRefreshing()
}
 refreshControl.addTarget(self, action: Selector("loadEvents"), forControlEvents: UIControlEvents.ValueChanged)
 self.tableView.addSubview(refreshControl)
var refreshControl = UIRefreshControl()