2017-08-10 5 views
0

私は、各行にテキストフィールドを持つUITableViewを持っています。ユーザーがテキストフィールドに何かを入力すると、そのtextFieldDidChangeなどをトリガーします。基本的には、テキストフィールドの変更が何かを計算したいのですが、どうすればいいのですか?このデリゲートがトリガされていないuituitviewに提出されたテキストのテキストフィールド変更イベントを迅速に与える方法は?

func numberOfSections(in tableView: UITableView) -> Int { 

    return 1 
} 

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

    if(tableView == self.seatsDropDownTblView){ 
     return seatsList!.count 
    }else{ 
     return priceList!.count 
    } 

} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 


    if tableView == self.seatsDropDownTblView { 
     let seats_cell = tableView.dequeueReusableCell(withIdentifier: "SeatsCell", for: indexPath) as! SeatsCell 
     seats_cell.seatsCountLbl.text = self.seatsList?[indexPath.row] 
     seats_cell.selectionStyle = .none 
     return seats_cell 

    }else { 
     let price_cell = tableView.dequeueReusableCell(withIdentifier: "AddPriceCell", for: indexPath) as! AddPriceCell 
     price_cell.txtPrice.text = priceList?[indexPath.row].Price 
     price_cell.dropOffPointLbl.text = priceList?[indexPath.row].DropPoint 

     self.indexPathArray.append(indexPath as NSIndexPath) 
     price_cell.txtPrice.tag = indexPath.row 
     //Delegates 
     price_cell.txtPrice.delegate = self 
     //Assign Delegates 
     price_cell.txtPrice.delegate = self 
     price_cell.selectionStyle = .none 
     return price_cell 

    } 


} 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

    if tableView == self.seatsDropDownTblView { 
     //let seats_cell = tableView.dequeueReusableCell(withIdentifier: "SeatsCell", for: indexPath) as! SeatsCell 
     //seats_cell.selectionStyle = .none 

     self.selectedSeat = (self.seatsList?[indexPath.row])! 
     self.selectedSeatLbl.text = self.selectedSeat 

     self.seatsDropDownView.isHidden = true 
     isDropDownFalls = true 
     self.dropDownBtnImg.image = UIImage(named:"drop_down") 

    }else { 
     let cell = tableView.cellForRow(at: indexPath) as! AddPriceCell 
     cell.selectionStyle = .none 

    } 
} 
func textFieldDidChange(_ textField: UITextField) { 
    NSLog("Event Triggered") 
} 

:ここ

は、私のコードの一部です。私はUITextFieldDelegateプロトコルもインポートしています。なにか提案を?

+0

ここでは、テキストフィールドにcellForRowAtの中に 'textFieldDidChange'を追加しました –

+3

' AddPriceCell'セルクラスにデリゲートメソッドを追加してみませんか? – Akhilrajtr

+0

YOUR_TEXTFILED.addTarget(self、action:#selector(textChanged(_ :)):.valueChanged) –

答えて

0

アクションとデリゲートの方法を区別する必要があります。デリゲートメソッドの正しい徴候はtextField(_:, shouldChangeCharactersIn range:, replacementString:)です。あなたは、アクションメソッドとして、あなたの方法textFieldDidChange(_:)を使用することができます

func textField(_ textField: UITextField, 
    shouldChangeCharactersIn range: NSRange, 
    replacementString string: String) -> Bool { 

    NSLog("Event Triggered") 
    return true 
} 

:だから、としてそれを実装する必要があります。それを登録するに使用します。

price_cell.txtPrice.addTarget(self, 
    action: #selector(textFieldDidChange(_:)), 
    for: .valueChanged) 
0

UITextFieldDelegateでUITextFieldのためのtextFieldDidChangeなど方法はありません。なぜそれがあなたのために呼ばれていないのですか? UITextFieldDelegateで利用可能なメソッドの1つを実装する必要があります。

textFieldDidEndEditingは実装したいと思うものです。 UITextFieldDelegateのすべてのメソッドをチェックするには、コマンド+ XcodeのUITextFieldDelegateをクリックします。

関連する問題