2015-05-13 51 views
1

我是新來的swift。我的應用使用人們上傳到網絡的照片,並在表格視圖中顯示照片。 每次有用戶上傳新照片時都會重新加載。 我有一個UITextField,當你按下它時,鍵盤會上升。我的問題是,它發生reloadView發生時(當一張新照片到達) 我想要做的是檢查是否UITextField是第一個識別器,如果是的話,我想等待重新加載,直到它不是第一個識別器。如何等待,直到文本標籤firstResponder在快速虛假

func refreshView() 
{ 
     dispatch_async(dispatch_get_main_queue()) {() -> Void in 
      while (self.dataSource.writeSomethingTextLabel.isFirstResponder()) { 
       //need to wait somehow for notification that it is not first responder anymore 
      } 
      self.tableView.reloadData() 
     } 
} 

因此,使用此代碼時,鍵盤不會停機,但wile循環運行並且一切都卡住了。我的問題是我如何等待,直到用戶完成使用文本標籤(第一響應者是假的)。 感謝

回答

2

可以有條件地在兩個地方重裝tableView:新數據到達時,當textField結束編輯:

@class YourViewController: UIViewController, UITextFieldDelegate { 

    var needsToReloadTableView = false; 

    func reloadTableViewIfNeeded() { 
     if needsToReloadTableView { 
      self.tableView.reloadData() 
      needsToReloadTableView = false 
     } 
    } 

    func gotNewData() { 
     needsToReloadTableView = true 

     if !self.textField.isFirstResponder { 
      reloadTableViewIfNeeded() 
     } 
    } 

    func textFieldDidEndEditing(textField:UITextField) { 
     reloadTableViewIfNeeded() 
    } 

} 
0
@IBAction func viewTapped(sender : AnyObject) { 
     totalTextField.resignFirstResponder() 
    } 
+1

請提供一些解釋 –