2015-12-21 145 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