簡體   English   中英

如何在 TableViewController 的 TableView 上方添加 TextField

[英]How to add a TextField above the TableView of a TableViewController

我在 NavigationController 中嵌入了一個 TableViewController。 該應用程序此時運行良好。 但現在我想在 TableView 上方添加一個 TextField:

想要在 TableView 上方添加一個 TextField

但我似乎無法從 TableView上方的 Object 庫中拖動 TextField。 它將它放到導航項上,但這不是我想要的。 我嘗試添加一個新的 ViewController,向其中添加一個 TextField,並嘗試將 TableView 從我現有的 TableViewController 拖到它上面,但這是不可能的。 通過采用現有的 UI 元素並將它們嵌入到其他視圖中並仍然保留現有功能來重新設計現有應用程序的正確方法是什么?

通過將 UITextField 拖到那里,您正在嘗試將兩個視圖添加到UITableViewControllerUIViewController 一個UIViewController (或UITableViewController )只有一個視圖,然后該視圖可以有多個子視圖。 所以這可能就是為什么拖放在您嘗試時不起作用的原因,您基本上是在嘗試直接向視圖 controller 添加多個視圖,而不是添加 UIView 的子視圖。

但是您可能不想將UITextField嵌入為您的表視圖的任意子視圖,即使理論上這是可能的。 在這種情況下,它可能會漂浮在某處或出現在屏幕中間。 您可能想要做的是將 UITextField 嵌入到表格視圖單元格( UITableViewCell )中,因此您可以在該表格視圖單元格中輸入一些文本。

StackOverflow 上有一些關於如何將 UITextField 嵌入表格視圖單元格的教程和其他答案

而不是試圖弄亂 StoryBoard 中的對象,我最終這樣做了:

  1. 刪除了 Storyboard 中的所有對象。 所以基本上我破壞了 TableViewController。

  2. 添加了一個普通的 ViewController。

  3. 將 TextField 添加到 ViewController 的頂部。

  4. 在 TextField 下方的 ViewController 中添加了 TableView。

  5. 安排和添加約束。

  6. 更改了現有的 ViewController.swift class header:

     class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {
  7. 從 TableView 中按住 Ctrl 並拖動一個 IBOutlet:

     @IBOutlet weak var tblView: UITableView!

    因此,通過這樣做,我可以將大部分代碼保留在 ViewController.swift 中。

  8. 設置委托和數據源:

     tblView.delegate = self tblView.dataSource = self textField.delegate = self
  9. 符合 TableViewDelegate 協議的方法現在會丟失override說明符,例如:

     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 1 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM