2015-12-21 3 views
0

У меня проблема. Мне нужно, когда я нажму кнопку, это автоматически обновит мою страницу, помещая в нее новый контент. Возможно, в то время как это происходит, я хотел бы, чтобы кнопка делала анимацию круга. Заранее спасибо.Обновление данных с использованием Парса

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.

Смежные вопросы