当点击自定义 TableView 单元格中的 UITextField 时转到新视图

Posted

技术标签:

【中文标题】当点击自定义 TableView 单元格中的 UITextField 时转到新视图【英文标题】:Segue to new view when UITextField within Custom TableView Cell tapped 【发布时间】:2017-01-07 16:11:31 【问题描述】:

我在自定义 UITableViewCell 中有一个 UITextField。

当点击自定义单元格中的 UITextField 时,我需要切换到新的视图控制器。

尝试的解决方案

我尝试在 CustomTableViewCell 类中使用

public func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool 
    print("Text Field Tapped")
    return false 

但是这不起作用,因为 performSegue 是一个 ViewController 函数。然后我尝试了

func someAction() 
    performSegue(withIdentifier: "identifier", sender: self) 

在 MyViewController 类中,但这也不起作用(不知道为什么)。这是我的两个类的样子:

MyViewController(持有 UITableView)

import UIKit

class MyViewController: UIViewController, UITableViewDelegate, UITableViewDataSource 

    @IBOutlet var tableView: UITableView!

    override func viewDidLoad() 

    

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        let cell:SearchTableViewCell = self.tableView.dequeueReusableCell(withIdentifier: "cell") as! SearchTableViewCell

        return cell
    

CustomTableViewCell

import UIKit

class CustomTableViewCell: UITableViewCell, UITextFieldDelegate 
    @IBOutlet weak var someTextField: UITextField!

    override func awakeFromNib() 
        super.awakeFromNib()

        self.someTextField.delegate = self
    

非常感谢您的聪明人可以提供的任何帮助:)

【问题讨论】:

【参考方案1】:

这样的事情应该可以工作:

class TableViewController: UITableViewController 
    override func viewDidLoad() 
        super.viewDidLoad()

        tableView.estimatedRowHeight = 44
        tableView.rowHeight = UITableViewAutomaticDimension
    
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return 1
    

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCell(withIdentifier: "TFCell", for: indexPath) as! TFCell
        cell.textField.delegate = self
        return cell
    


extension TableViewController: UITextFieldDelegate 
    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool 
        performSegue(withIdentifier: "TFSegue", sender: textField)
        return false
    


class TFCell: UITableViewCell 
    @IBOutlet weak var textField: UITextField!

“TFSegue”是从“TableViewController”到在storyboard中创建的targetviewcontroller的segue。有什么不清楚的地方欢迎追问!

【讨论】:

非常感谢您的帮助!谢谢。不确定您是否对 Swift 中的自定义 SearchBars 有任何经验,但如果有,您可以看看这篇文章:***.com/questions/41641521/… 吗?再次感谢!

以上是关于当点击自定义 TableView 单元格中的 UITextField 时转到新视图的主要内容,如果未能解决你的问题,请参考以下文章

如何使用分页更改 tableview 自定义单元格中的 imageview 图像。

ios 5子视图在tableview单元格中的两个视图之间翻转

在 TableView 自定义单元格中刷新数组

如何在自定义滑动(而不是滑动删除)单元格(滑动到邮件/短信)中点击一个单元格时删除在其他 TableView 单元格中添加的子视图

iOS:如何从 tableview 的自定义单元格中的 UITextField 访问值

在tableview自定义单元格中的图像上长按手势