当选择一行时,在SearchTextField中未调用tableView didSelectRowAt

问题描述 投票:0回答:1

在我的IOS快速项目中,我使用SearchTextField,用于可搜索的下拉组合框。几天前我的代码很好。但是突然我意识到我的searchTextField无法正常工作。

当我开始输入多于3个字符时,它开始显示来自Web服务的结果,符合预期。但是,当我从tableView中选择一个单元格时,什么也没有发生。我发现当我从list(tableView)代码中选择一个项目时,不会在SearchTextField.swift中输入以下方法

 public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if itemSelectionHandler == nil {
            self.text = filteredResults[(indexPath as NSIndexPath).row].title
        } else {
            let index = indexPath.row
            itemSelectionHandler!(filteredResults, index)
        }
        clearResults()
    }

并且在我的viewcontroller.swift中也没有输入“ itemSelectionHandler”,但输入了“ userStoppedTypingHandler”

    @IBOutlet weak var mySearchTextField: SearchTextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        mySearchTextField.userStoppedTypingHandler = {
            if let criteria = self.mySearchTextField.text {
                if criteria.count > 3 {
                   ......
                   print("enters here")
                }
            }
        }

         mySearchTextField.itemSelectionHandler = { filteredResults, itemPosition in
          print("not enters here, cell selected")
       .....
       .....
        }
}

但是代码输入此方法并在SearchTextField.swift中显示结果,

        public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
print("cell ok")  
    var cell = tableView.dequeueReusableCell(withIdentifier: SearchTextField.cellIdentifier)    
            if cell == nil {
                cell = UITableViewCell(style: .subtitle, reuseIdentifier: SearchTextField.cellIdentifier)
            }
    ......
    ......
    return cell
    }

TableView数据源和委托还可以。我的viewcontroller中没有gestureRecognizer。我打开了一个空的新项目,只添加了SearchTextField pod和uitextfield,它可以正常工作。我认为我的项目或情节提要特效中的某些方法didselectat方法。是什么导致此问题?有什么主意吗?

swift uitableview combobox dropdown didselectrowatindexpath
1个回答
0
投票
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. registerForPushNotifications() IQKeyboardManager.shared.enable = true IQKeyboardManager.shared.enableAutoToolbar = false //IQKeyboardManager.shared.shouldResignOnTouchOutside = true return true }
© www.soinside.com 2019 - 2024. All rights reserved.