Swift 解析:加载对象/在拉动刷新后刷新tableview
Swift 我正试图使它成为这样,当你拉刷新tableview时,它会用Parse.com上存储的数据更新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
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()