2017-06-02 68 views
0

我試圖重新加載我的tableview,而在UITextField中鍵入數據。當我輸入一些時間重新加載動作將工作,但是當我稍後刪除一些時間重新加載動作不起作用。這裏是我的代碼:TableView Reloaddata不工作當編輯更改的值

@IBOutlet weak var showErrorlbl: UILabel! 
@IBOutlet weak var tableView: UITableView! 
@IBOutlet weak var searchforText: UITextField! 
@IBOutlet weak var searchforDate: UITextField! 
@IBOutlet weak var pickerView: UIDatePicker! 
var dispatchArr = [String]() 
var dispatch: String = String() 
var dismantl: String = String() 
var dismantal: [String] = [String]() 
var totalSqft: String = String() 
var totalSQFT: [String] = [String]() 
var marktPerson: [String] = [String]() 
var showNameArr: [String] = [String]() 
var showName = String() 
var number = [String]() 
var day = Int() 
var month = Int() 
var year = Int() 
var popup:UIView! 
@IBAction func datePicker(_ sender: Any) 
{ 
    if pickerView.isHidden == true 
    { 
    pickerView.isHidden = false 
    }else 
    { 
    pickerView.isHidden = true 
    tableView.reloadData() 
    for i in 0 ..< passAllDetails.count 
    { 
     dispatch = (passAllDetails[i]["Start_Date"] as! String) 
     if dispatch.contains(searchforDate.text!) 
     { 
      showErrorlbl.isHidden = true 
      dispatchArr.append(showName) 
      dismantl = (passAllDetails[i]["Dismantel_Date"] as! String) 
      totalSqft = (passAllDetails[i]["Board_Size"] as! String) 
      let markPerson = (passAllDetails[i]["Marketing_Person_Name"] as! String) 
      showName = (passAllDetails[i]["Show_Name"] as! String) 
      showNameArr.append(showName) 
      number.append(dispatch) 
      dismantal.append(dismantl) 
      totalSQFT.append(totalSqft) 
      marktPerson.append(markPerson) 
     } 
       } 
    } 
    DispatchQueue.main.async(execute: {()->() in 
     self.tableView.reloadData() 
    }) 
    //tableView.reloadData() 
} 
public func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool 
{ 
    searchforDate.text = "" 
    searchforText.text = "" 
      return true 
} 
    @IBAction func homeButton(_ sender: Any) 
{ 
    self.performSegue(withIdentifier: "searchsegue", sender: self) 
} 
override func viewDidLoad() 
{ 
    searchforDate.delegate = self 
    searchforText.delegate = self 
    searchforText.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) 
    searchforDate.addTarget(self, action: #selector(datePicker(_:)), for: .editingChanged) 
    pickerView.isHidden = false 
    pickerView.timeZone = NSTimeZone.local 
    pickerView.backgroundColor = UIColor.gray 
    //Add an event to call onDidChangeDate function when value is changed. 
    pickerView.addTarget(self, action: #selector(SearchViewController.datePickerValueChanged(_:)), for: .valueChanged) 
    super.viewDidLoad() 
    //Do any additional setup after loading the view. 
} 
//Implement in DidChange function 
func textFieldDidChange(_ textField: UITextField) { 

    for i in 0 ..< passAllDetails.count 
    { 
     showName = (passAllDetails[i]["Show_Name"] as! String) 
     if showName.contains(searchforText.text!) 
     { 
       showErrorlbl.isHidden = true 
       showNameArr.append(showName) 
       dispatch = (passAllDetails[i]["Dispatch_Date"] as! String) 
       dismantl = (passAllDetails[i]["Dismantel_Date"] as! String) 
       totalSqft = (passAllDetails[i]["Board_Size"] as! String) 
       let markPerson = (passAllDetails[i]["Marketing_Person_Name"] as! String) 
       number.append(dispatch) 
       dismantal.append(dismantl) 
       totalSQFT.append(totalSqft) 
       marktPerson.append(markPerson) 
       //tableView.reloadData() 
     } 
    } 

DispatchQueue.main.async(execute: {()->() in 
    self.tableView.reloadData() 
}) } 
func datePickerValueChanged(_ sender: UIDatePicker){ 
    let componenets = Calendar.current.dateComponents([.year, .month, .day], from: sender.date) 
     day = componenets.day! 
    month = componenets.month! 
    year = componenets.year! 
    searchforDate.text = ("\(day)-\(month)-\(year)") 
} 
override func viewWillAppear(_ animated: Bool) { 
    pickerView.isHidden = true 
} 
func numberOfSectionsInTableView(tableView: UITableView) -> Int 
{ 
       return 1 
} 
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
{ 
    if searchforDate.text == "" 
    { 
     return showNameArr.count 
    } 
    else if searchforText.text == "" 
    { 
     return dispatchArr.count 
    } 
    return 0 
} 
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{ 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! SearchCustomCell 
    cell.dispatchDateLbl.text = number[indexPath.row] 
    cell.marketingPersonName.text = marktPerson[indexPath.row] 
    cell.showNameLabel.text = showNameArr[indexPath.row] 
    cell.totalSQFTTextview.text = totalSQFT[indexPath.row] 
    cell.dismantlDateLbl.text = dismantal[indexPath.row] 
    return cell 
} 

回答

0

試試這個:

func textFieldDidChange(_ textField: UITextField) { 
    showNameArr.removeAllData() 
    for i in 0 ..< passAllDetails.count 
    { 
     showName = (passAllDetails[i]["Show_Name"] as! String) 
     if showName.contains(searchforText.text!)// and check that this condition will be true while delete character. 
     { 
       showErrorlbl.isHidden = true 
       showNameArr.append(showName) 
       dispatch = (passAllDetails[i]["Dispatch_Date"] as! String) 
       dismantl = (passAllDetails[i]["Dismantel_Date"] as! String) 
       totalSqft = (passAllDetails[i]["Board_Size"] as! String) 
       let markPerson = (passAllDetails[i]["Marketing_Person_Name"] as! String) 
       number.append(dispatch) 
       dismantal.append(dismantl) 
       totalSQFT.append(totalSqft) 
       marktPerson.append(markPerson) 
     } 
      tableView.reloadData() 

    } 
+0

它越來越錯誤兄弟 – sathiyaraj

+0

份額錯誤信息 – KKRocks

+0

值類型的「[字符串]」沒有成員「removeAllData」 – sathiyaraj