カスタムテーブルビューセルのUITextField。セル/テキストフィールドがタップされたときにピッカービューを表示する

caa5042

カスタムテーブルビューセルにUITextFieldがあります。ユーザーがセル(またはUITextField)のいずれかを押すと、キーパッドの代わりにピッカービューが表示されます。これを実現するために、テキストフィールドの「inputview」プロパティと「accesoryview」プロパティを使用しています。

はい。したがって、セルを選択すると、ピッカービューがそのピッカー値とともに表示されます。ただし、テキストフィールド自体(セル内にある)を選択すると、ピッカービューは表示されますが、ピッカー値は表示されません。 .iピッカービューに空のセルが1つだけ表示されます。

ユーザーがテキストフィールドまたはセルのどちらを押しても、まったく同じことが起こるようにするには、どのアプローチを使用する必要がありますか(つまり、ピッカービューがピッカー値とともに表示されます)。何がこの問題を引き起こしているのかは明らかですか?

TableViewCellのUITextfield。UIPickerViewを表示する

コードからすべての混乱を取り除き、質問に関連する部分だけを残しました(関連するコードを省略していないことを願っています):

import UIKit

class EditProfileViewController: UIViewController, UITableViewDelegate,UITableViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate,UITextViewDelegate {
    let properties = ["Name","Birthday","Diet"]
    let diets:NSArray = ["Vegan","Plant-based","Vegetarian","Meat Eater"]
    var userEditProfileTable : UITableView!
    var reminderCells = (1...3).map{ _ in EditProfileTableViewCell()}
    var toolBar : UIToolbar!
    var i:Int!
    var myUIPicker = UIPickerView()
    var editorViewController: EditorViewController!
    var myValues: NSArray!



override func viewDidLoad() {
    super.viewDidLoad()

    view.backgroundColor = UIColor.blue

    let barHeight: CGFloat = UIApplication.shared.statusBarFrame.size.height
    let displayWidth: CGFloat = self.view.frame.width
    let displayHeight: CGFloat = self.view.frame.height
    userEditProfileTable = UITableView(frame: CGRect(x: 0, y: barHeight, width: displayWidth, height: displayHeight - barHeight))

    userEditProfileTable.delegate = self
    userEditProfileTable.dataSource = self
    userEditProfileTable.rowHeight = 40

    userEditProfileTable.register(EditProfileTableViewCell.self, forCellReuseIdentifier: "cellId")

    self.userEditProfileTable.reloadData()
    self.view.addSubview(userEditProfileTable)

}


func generalPicker(){
    myUIPicker.becomeFirstResponder()
    self.myUIPicker.delegate = self
    self.myUIPicker.dataSource = self
}

@objc func donePicker() {
    reminderCells[i].valueTextField.resignFirstResponder()

}


func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    reminderCells[indexPath.item].valueTextField.becomeFirstResponder()
    i = indexPath.item
    print(properties[indexPath.item])
    switch properties[indexPath.item] {
    case "Name":
        print("jkehdfgjdhj")
    case "Birthday":
        print("jhkjhjh")
    case "Diet":
        myValues = diets
        generalPicker()
        print(properties[indexPath.item])
    default:
        print("Some other character")
    }
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // retuen no of rows in sections
    return properties.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // retuen your custom cells
    print(indexPath)
    let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! EditProfileTableViewCell
    cell.backgroundColor = UIColor.clear
    cell.property.text = properties[indexPath.item]
    cell.isUserInteractionEnabled = true
    cell.valueTextField.isUserInteractionEnabled = true
    cell.valueTextField.delegate = self

    toolBar = UIToolbar()
    toolBar.sizeToFit()

    switch properties[indexPath.item]{
        case "Birthday":
            print("bonita")
        case "Diet":
            let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(donePicker))
            toolBar.setItems([doneButton], animated: false)
            cell.valueTextField.inputAccessoryView = toolBar
            cell.valueTextField.inputView = myUIPicker
        default:
            print("mamacita")
    }

    reminderCells[indexPath.item] = cell
    return cell
}

// data method to return the number of column shown in the picker.
func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

// data method to return the number of row shown in the picker.
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

    print(myValues.count)
    return myValues.count
}

// delegate method to return the value shown in the picker
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    print("mjkhjkhkj")
    print(myValues[row])
    return myValues[row] as? String
}

// delegate method called when the row was selected.
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    print("row: \(row)")
    print("value: \(myValues[row])")

    reminderCells[i].valueTextField.text = myValues[row] as? String
}

}

アブデラハド・ダーウィッシュ

didSelectでピッカーのデータソースを設定し、テキストフィールドに追加する必要があります。この行を委任しますmyValues = Diets

// UITextField Delegates
    func textFieldDidBeginEditing(_ textField: UITextField) {
         myValues = diets  // be addedd
         generalPicker()
    }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

テーブルビュー外の別のビューからカスタムセルからテキストフィールドデータを取得する

分類Dev

iOSのカスタムテーブルビューセル内のピッカービューにデータをロードする方法、Objective c

分類Dev

スタックビューのテキストフィールドで、キーボードが表示されたらビューを上に移動します

分類Dev

テーブルビューセルをクリックしたときにUITextfieldにテキストが表示されませんでしたか?

分類Dev

テーブルビューセルに表示されるデータを取得するためのカスタムデリゲート

分類Dev

別のビューコントローラからテーブルビューセルラベルを変更しようとしたときに2回呼び出されたカスタムデリゲートメソッド

分類Dev

テーブルビューに表示されないカスタムセル-Xcode

分類Dev

同じセル内でボタンをクリックしたときに、カスタムテーブルビューセル内の特定のビューを表示/非表示にする方法

分類Dev

テーブルビューがスクロールされるときに、カスタムUITableViewフッターが下部にロックされない

分類Dev

テーブルビューカスタムセルでテキストフィールドテキストを取得できません

分類Dev

Html.TextBoxFor()がビューに表示されないか、フィールドセットにあるときにテキストとして表示されない

分類Dev

テキストフィールドの右ボタンをタップしたときにxibビューを表示する方法

分類Dev

コンセントとIBを使用してテーブルビューセクションのカスタムヘッダービューを作成する方法

分類Dev

カスタムテキストフィールドとテキストビューを作成する方法

分類Dev

カスタムテーブルビューセルを使用してUITextFieldからデータを取得する

分類Dev

さまざまなカスタムセルタイプをテーブルビューに配置する

分類Dev

Obj-C-カスタムテーブルビューセルのボタンがタップされた場合、テーブルビュー行を削除します

分類Dev

ピッカービューが特定のテキストフィールドに表示されないのはなぜですか?

分類Dev

カスタムビューでエディターのテキストフィールドを更新する

分類Dev

jsonから番号を取得し、カスタムテーブルビューセルのユーザータブ呼び出しボタンのときにダイヤルパッドにその番号を表示する方法

分類Dev

カスタムサブビューを使用したiOSテーブルビューセルの自動高さ

分類Dev

カスタムテーブルビューセルのボタンが表示されない

分類Dev

セルの高さを変更しようとすると、タップしたときにピッカービューが含まれます

分類Dev

総計がテーブルに表示されていないときに、コンテキストメニューフィルターを使用してExcelピボットテーブルフィールドの最後の項目をフィルターで除外する方法はありますか?

分類Dev

テーブル ビュー セルでカスタム クラス ラベルを非表示にする方法は?

分類Dev

カスタムビューをダブルタップすると、2つのアクティビティが開きます

分類Dev

アプリがバックグラウンドにあるときに、カスタムローカル通知ビューまたはカスタムアラートビューを表示するにはどうすればよいですか?

分類Dev

カスタム テーブルビュー セルの下にテーブルビューを作成するにはどうすればよいですか

分類Dev

テーブルビューセクション間の間隔を作成するにはどうすればよいですか?(すべてのセクションのヘッダーとフッターはすでにカスタムビューです)

Related 関連記事

  1. 1

    テーブルビュー外の別のビューからカスタムセルからテキストフィールドデータを取得する

  2. 2

    iOSのカスタムテーブルビューセル内のピッカービューにデータをロードする方法、Objective c

  3. 3

    スタックビューのテキストフィールドで、キーボードが表示されたらビューを上に移動します

  4. 4

    テーブルビューセルをクリックしたときにUITextfieldにテキストが表示されませんでしたか?

  5. 5

    テーブルビューセルに表示されるデータを取得するためのカスタムデリゲート

  6. 6

    別のビューコントローラからテーブルビューセルラベルを変更しようとしたときに2回呼び出されたカスタムデリゲートメソッド

  7. 7

    テーブルビューに表示されないカスタムセル-Xcode

  8. 8

    同じセル内でボタンをクリックしたときに、カスタムテーブルビューセル内の特定のビューを表示/非表示にする方法

  9. 9

    テーブルビューがスクロールされるときに、カスタムUITableViewフッターが下部にロックされない

  10. 10

    テーブルビューカスタムセルでテキストフィールドテキストを取得できません

  11. 11

    Html.TextBoxFor()がビューに表示されないか、フィールドセットにあるときにテキストとして表示されない

  12. 12

    テキストフィールドの右ボタンをタップしたときにxibビューを表示する方法

  13. 13

    コンセントとIBを使用してテーブルビューセクションのカスタムヘッダービューを作成する方法

  14. 14

    カスタムテキストフィールドとテキストビューを作成する方法

  15. 15

    カスタムテーブルビューセルを使用してUITextFieldからデータを取得する

  16. 16

    さまざまなカスタムセルタイプをテーブルビューに配置する

  17. 17

    Obj-C-カスタムテーブルビューセルのボタンがタップされた場合、テーブルビュー行を削除します

  18. 18

    ピッカービューが特定のテキストフィールドに表示されないのはなぜですか?

  19. 19

    カスタムビューでエディターのテキストフィールドを更新する

  20. 20

    jsonから番号を取得し、カスタムテーブルビューセルのユーザータブ呼び出しボタンのときにダイヤルパッドにその番号を表示する方法

  21. 21

    カスタムサブビューを使用したiOSテーブルビューセルの自動高さ

  22. 22

    カスタムテーブルビューセルのボタンが表示されない

  23. 23

    セルの高さを変更しようとすると、タップしたときにピッカービューが含まれます

  24. 24

    総計がテーブルに表示されていないときに、コンテキストメニューフィルターを使用してExcelピボットテーブルフィールドの最後の項目をフィルターで除外する方法はありますか?

  25. 25

    テーブル ビュー セルでカスタム クラス ラベルを非表示にする方法は?

  26. 26

    カスタムビューをダブルタップすると、2つのアクティビティが開きます

  27. 27

    アプリがバックグラウンドにあるときに、カスタムローカル通知ビューまたはカスタムアラートビューを表示するにはどうすればよいですか?

  28. 28

    カスタム テーブルビュー セルの下にテーブルビューを作成するにはどうすればよいですか

  29. 29

    テーブルビューセクション間の間隔を作成するにはどうすればよいですか?(すべてのセクションのヘッダーとフッターはすでにカスタムビューです)

ホットタグ

アーカイブ