2017-09-22 81 views
1

我使用2 tableviews如何在textFieldDidEndEditing中找到正在編輯的tableview?

都有textfiledtableviewcell

我得到文本框的文本textFieldDidEndEditing,但如何將我知道的文本正在被編輯所屬的tableview,我只是想知道的條件我可以區分來自textfield的文本以存儲在兩個不同的陣列中。

func textFieldDidEndEditing(_ textField: UITextField) 
{ 
    // let indexOf = txtArray.index(of:textField.tag) 

    if self.tblAnswer.isEditing 
    { 
     let indexOf = textField.tag 

     if let text = textField.text 
     { 
      if allAnsText.indices.contains(indexOf) 
      { 
       allAnsText.remove(at: indexOf) 
      } 
      if text.isEmpty 
      { 
       print("Write some text there") 
      } 
      else 
      { 
      allAnsText.insert(text, at: indexOf) 
      print(allAnsText) 
      } 
     } 
    } 
    else if self.tblVideo.isEditing 
    { 
     let indexOf = textField.tag 

     if let text = textField.text 
     { 
      if allMediaText.indices.contains(indexOf) 
      { 
       allMediaText.remove(at: indexOf) 
      } 
      if text.isEmpty 
      { 
       print("Write some text there") 
      } 
      else 
      { 
       allMediaText.insert(text, at: indexOf) 
       print(allMediaText) 
      } 
     } 

    } 

} 
+0

請顯示一些代碼,你已經嘗試過。 – iPeter

+0

你的tableviewcell對於兩個tableview都不同或相同 –

+0

你在獲取textField.superView.superView嗎? –

回答

0

忘掉遍歷視圖層次結構;它很容易出錯,並且確切的細節可能在未來發生變化(並且可怕地破壞您的應用程序)。

相反,試試這個:

  1. 在屏幕上獲取文本字段的位置:

    // Center on text field's own coordinate system 
    let position = textField.frame.center 
    
    // Center on Window's coordinate system 
    let positionOnWindow = textField.convert(position, to: nil) 
    
  2. 轉換點,以表視圖的座標系統,看看它相當於一個排:

    let positionInTable = tableView1.convert(positionOnWindow, from: nil) 
    
    if let indexPath = tableView1.indexPathForRow(at: positionInTable) { 
        // Text field is inside a row of table view 1 
    } else { 
        // Otherwise 
    } 
    

備註:以上代碼未經測試。可能包含編譯器錯誤。

假設在同一類運行這兩個代碼片段(您的表視圖代理,數據源和文本字段代表)應該有周圍路過的positionOnWindow值(它可以一切發生的文本字段的委託方法內)沒有問題。

+0

謝謝你接受答案。讓我知道,如果你有它的工作(我沒有測試我的答案的代碼)。 –

+1

終於。感謝努力@Nicolas Miari(特別感謝),@ Pallavi Srikhakollu,@ Salman Ghumsani,@ Jon Snow –

+1

yah其工作。 –

1

斯威夫特3.X

假設你textFiled的層次是:

TextField->細胞>的TableView

寫這行代碼在textFieldDidEndEditing

print(textField.superview?.superview) 
if textField.superview?.superview == myTable1 { 

} 
else if textField.superview?.superview == myTable2 { 

} 
else { 

} 
+0

爲什麼不使用'else if'或直接使用'else',這裏兩個如果沒有意義 –

+0

感謝提醒 –

+0

在文本字段和單元格之間沒有單元格的**內容視圖**? 'UITableView'和'UITableviewCell'的內部結構是實現細節,而不是公共API的一部分。依賴於該結構的代碼非常脆弱。 –

相關問題