2016-04-19 8 views
0

私はUITextField InputViewをオーバーライドするTableViewを実装しようとしています。このTableViewは、検索可能なTableViewをユーザに提供し、選択した値でUITextFieldを設定します。UITextView InputView UITableViewController

公正なビットを検索したところ、私が見つけた最も近い解決策はthisですが、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? 

私はので、私はreloadDataをメインスレッドとまだ何もないから呼び出されている知っているdidSetを変更しました。

var items = [NSObject](){ 
    didSet{ 
     dispatch_async(dispatch_get_main_queue(),{ 

      self.tableView.reloadData() 

     }); 
    } 
} 

おそらくその私は私のメインのViewControllerにinputViewを設定していますが、私はiOSとスウィフトにかなり新しいですので、私はおそらく基本的な何かが欠けている方法とは何か。

@IBOutlet weak var mspEmployee: MultiSelectPicker! 

    let employeePickerView = MultiSelectPicker() 
    employeePickerView.items = self.oEmployees 
    self.mspEmployee = employeePickerView 
    self.txtEmployee.inputView = self.mspEmployee.view 

これは本当に私を怒らせるので、助けていただければ幸いです。

答えて

0

UITextFieldをサブクラス化し、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 
    } 
} 
+0

返信いただきありがとうございます! - 私は新しいクラスとしてOptionSelectTextを実装しましたが、 'picker.delegate = self'というエラーが表示されます。 'OptionSelectText'型に値を割り当てることができません。 'OptionSicker'はあなたが投稿したMultiSelectPickerコードとどのように違うのですか?元の?私は非常にこのように謝罪しています。もしこれらが愚かな質問であれば、 – Tim

+0

あなたのmultiselectpickerクラスを使用するようOptionPickerを変更してください。 –

+0

うん、私はそれを変更しました。クラスOptionSelectText:BaseTextField { LETピッカー:MultiSelectPicker //これは私が値に 必要な初期化を選択するために使用するのUITableViewControllerです(コーダaDecoder:NSCoder)?{ ピッカー= MultiSelectPicker() picker.view.translatesAutoresizingMaskIntoConstraints = falseを でsuper.init (コーダ:aDecoder) ないあなたはクラスOptionSelectTextようにする必要があり picker.delegate =自己 – Tim

関連する問題