web-dev-qa-db-ja.com

Swiftを使用してドロップダウンリストを作成しますか?

Swiftでドロップダウンメニューを作成するライブラリは何ですか?私はXcodeとSwift言語が初めてなので、誰でもドロップダウンリストを迅速に実装する方法を教えてください。

25
mazinAlmas

「ドロップダウンメニュー」は、Webコントロール/用語です。 iOSにはこれらがありません。 UIPopoverControllerを見る方が良いかもしれません。 PopoverControllersの洞察については、このチュートリアルをご覧ください

http://www.raywenderlich.com/29472/ipad-for-iphone-developers-101-in-ios-6-uipopovercontroller-tutorial

9
Chackle

(Swift 3)テキストボックスとuipickerviewをストーリーボードに追加し、デリゲートとデータソースをuipickerviewに追加し、デリゲートをテキストボックスに追加します。ビデオでフォローしてください https://youtu.be/SfjZwgxlwcc

import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {

    @IBOutlet weak var textBox: UITextField!
    @IBOutlet weak var dropDown: UIPickerView!

    var list = ["1", "2", "3"]

    public func numberOfComponents(in pickerView: UIPickerView) -> Int{
        return 1
    }

    public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{

        return list.count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

        self.view.endEditing(true)
        return list[row]
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        self.textBox.text = self.list[row]
        self.dropDown.isHidden = true
    }

    func textFieldDidBeginEditing(_ textField: UITextField) {

        if textField == self.textBox {
            self.dropDown.isHidden = false
            //if you don't want the users to se the keyboard type:

            textField.endEditing(true)
        }
    }
}
27
Charles Xavier

残念ながら、iOS9でUIPopoverControllerを適用しようとすると、非推奨のクラス警告が表示されます。代わりに、目的のビューのUIModalPresentationPopoverプロパティを設定して同じ結果を得る必要があります。

ポップオーバー

水平に規則的な環境で、コンテンツがポップオーバービューで表示されるプレゼンテーションスタイル。背景のコンテンツは淡色表示され、ポップオーバーの外側をタップするとポップオーバーが閉じられます。タップでポップオーバーを閉じたくない場合は、popoverPresentationControllerプロパティから取得できる、関連するUIPopoverPresentationControllerオブジェクトのpassthroughViewsプロパティに1つ以上のビューを割り当てることができます。

水平方向にコンパクトな環境では、このオプションはUIModalPresentationFullScreenと同じように動作します。

IOS 8.0以降で利用可能。

リファレンス: https://developer.Apple.com/documentation/uikit/uiviewcontroller/1621355-modalpresentationstyle

8
Ilan Kutsman

必ずUIPickerViewDataSourceおよびUIPickerViewDelegateプロトコルを使用する必要があります。そうしないと、Swift 3の時点でAppDelegateエラーがスローされます。

また、構文の変更に注意してください。

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int

今でしょ:

public func numberOfComponents(in pickerView: UIPickerView) -> Int

以下は私のために働いた。

import UIkit

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

    @IBOutlet weak var textBox: UITextField!
    @IBOutlet weak var dropDown: UIPickerView!

    var list = ["1", "2", "3"]

    public func numberOfComponents(in pickerView: UIPickerView) -> Int{
        return 1
    }

    public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{

        return list.count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

        self.view.endEditing(true)
        return list[row]
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        self.textBox.text = self.list[row]
        self.dropDown.isHidden = true
    }

    func textFieldDidBeginEditing(_ textField: UITextField) {

        if textField == self.textBox {
            self.dropDown.isHidden = false
            //if you don't want the users to se the keyboard type:

            textField.endEditing(true)
        }
    }
}
2
Dana Young

UIPickerviewを使用することは、Appleのヒューマンインターフェイスガイドラインに従って実装する正しい方法です

モバイルサファリでドロップダウンを選択すると、UIPickerviewが表示され、ドロップダウンアイテムを選択できます。

代わりに

使用できますUIPopoverController iOS 9は非推奨ですが、UIModalPresentationPopover表示したいビューの

UIActionsheetを使用して項目を表示できますが、UIAlertViewControllerを選択し、UIActionSheetstyleを選択して、前者が非推奨になったことを示します最新バージョン

1
Durai Amuthan.H