UITextView InputView UITableViewController

我试图实现一个重写UITextViews InputView的TableView,为用户提供一个可search的TableView,然后用选定的值填充UITextField。

我已经search了一个公平的位,我find的最接近的解决scheme是这个,但我不知道如何将UITableViewController与我的UITextViews InputView关联?

我可以看到这些函数在MultiSelectPicker中被调用…

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int override func numberOfSectionsInTableView(tableView: UITableView) -> Int 

但是,这些不是我相当确定的解释为什么我没有看到填充在表视图中的任何东西。

 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 

我已经改变了didSet,所以我知道reloadData被从主线程调用,仍然没有。

 var items = [NSObject](){ didSet{ dispatch_async(dispatch_get_main_queue(),{ self.tableView.reloadData() }); } } 

它可能是我在我的主viewcontroller中设置inputView的方式,但我相当新的iOS和Swift,所以我可能缺less一些基本的东西。

  @IBOutlet weak var mspEmployee: MultiSelectPicker! let employeePickerView = MultiSelectPicker() employeePickerView.items = self.oEmployees self.mspEmployee = employeePickerView self.txtEmployee.inputView = self.mspEmployee.view 

这真的是让我发疯,所以任何帮助将不胜感激!

您需要inheritanceUITextField并将inputView设置为您的UITableView的视图。 这里是我最近做的类似的一些实现。

 class BaseTextField: UITextField{ //Base textfield so that all custom textfields inherit the disabling of certain uitextfield things required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) //disabling menu, autocorrection and copy paste functionality autocorrectionType = UITextAutocorrectionType.No inputAssistantItem.leadingBarButtonGroups = [] inputAssistantItem.trailingBarButtonGroups = [] } override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool { NSOperationQueue.mainQueue().addOperationWithBlock { () -> Void in UIMenuController.sharedMenuController().setMenuVisible(false, animated: false) } return false } } class OptionSelectText: BaseTextField{ let picker:OptionPicker //this is the UITableViewController I Use for selecting values required init?(coder aDecoder: NSCoder) { picker = OptionPicker() picker.view.translatesAutoresizingMaskIntoConstraints = false super.init(coder: aDecoder) picker.delegate = self let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: picker.view.frame.width, height: 44)) let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(OptionSelectText.pickerViewDoneAction)) let flex = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: self, action: nil) let clearButton = UIBarButtonItem(title: "Clear", style: UIBarButtonItemStyle.Plain, target:self, action: #selector(OptionSelectText.pickerClearAction)) toolbar.setItems([clearButton, flex, doneButton], animated: false) toolbar.userInteractionEnabled = true inputView = picker.view inputAccessoryView = toolbar } }