2015-12-21 148 views
0

我遇到问题。我需要的是,当我按下按钮时,这会自动刷新我的页面,将新内容放入其中。可能发生这种情况时,我希望按钮做一个圆形动画。提前致谢。使用Parse刷新数据

class ViewControllerAvvisi: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate 
{ 

var selfTable: NSMutableArray = NSMutableArray() 

@IBOutlet weak var MessageTable: UITableView! 
@IBOutlet weak var MessageTextField: UITextField! 
@IBOutlet weak var SendMessage: UIButton! 

var messagesArray:[String] = [String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.MessageTable.delegate = self 
    self.MessageTable.dataSource = self 

    self.MessageTable.delegate = self 

    let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "TableViewTapped") 
    self.MessageTable.addGestureRecognizer(tapGesture) 

    func retrieveMessages() { 

     let query = PFQuery(className: "Message") 

     query.findObjectsInBackgroundWithBlock { 
      (remoteObjects: [PFObject]?, error: NSError?) -> Void in 

      self.messagesArray = [String]() 

      for messageObject in remoteObjects! { 

       let messageText: String? = (messageObject as PFObject) ["Text"] as? String 

       if messageText != nil { 

        self.messagesArray.append(messageText!) 

       } 
      } 

      self.MessageTable.reloadData() 

     } 
    } 

    retrieveMessages() 


} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = self.MessageTable.dequeueReusableCellWithIdentifier("MessageCell")! as UITableViewCell 

    cell.textLabel?.text = self.messagesArray[indexPath.row] 

    return cell 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return messagesArray.count 
} 

@IBAction func SendMessage(sender: AnyObject) { 

    self.MessageTable.endEditing(true) 

    let NewMessage: PFObject = PFObject (className: "Message") 
    NewMessage["Text"] = self.MessageTextField.text 

    self.MessageTextField.enabled = false 
    self.SendMessage.enabled = false 

    NewMessage.saveInBackgroundWithBlock { (success:Bool, NSError) -> Void in 

      if (success == true) { 

       NSLog("Message successfully saved") 

     }else{ 

       NSLog("Message didn't save") 

     } 

    self.MessageTextField.enabled = true 
    self.SendMessage.enabled = true 
    self.MessageTextField.text = "" 

    } 
} 

@IBAction func Refresh(sender: AnyObject) { 

} 

}

+1

您应该将调用移到循环外部的'self.MessageTable.reloadData()',但除此之外,一切看起来都很好。你必须在某处调用'retrieveMessages()'。你的问题是什么。 – luk2302

+0

问题是我需要在哪里以及如何调用该函数,以便单元格可以显示Parse的数据。 –

+2

在不相关的说明中,您应该在命名变量时使用适当的iOS编程约定。所有实例变量都应以小写字母开头,例如var messagesArray:[String] = [String]() –

回答

2

只需使用函数创建重新加载新的数据。将它移到viewDidLoad函数之外。 用你想重新加载数据的按钮添加一个IBAction并添加retrieveMessages()。重新加载时,新数据将自动加载。

@IBAction func refreshData(sender: AnyObject) { 
retrieveMessages() 
} 

对于圆形动画,我建议使用UIActivityIndicatorView