使用swift制作下拉列表?

时间:2015-05-19 07:50:51

标签: ios swift drop-down-menu

在swift中制作下拉菜单的库是什么?我是Xcode和Swift语言的新手,所以有人可以指导我如何在swift中实现下拉列表吗?

5 个答案:

答案 0 :(得分:27)

(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)
        }
    }
}

答案 1 :(得分:9)

A'下拉菜单'是一个网络控制/术语。在iOS中,我们没有这些。您可能会更好地关注UIPopoverController。查看本教程,了解对PopoverControllers的了解

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

答案 2 :(得分:8)

不幸的是,如果您希望在iOS9中应用UIPopoverController,那么您将获得一个弃用的类警告。相反,您需要设置所需的视图UIModalPresentationPopover属性以获得相同的结果。

  

<强>酥料饼

     

在水平常规环境中,呈现样式   内容以弹出视图显示的位置。的背景   内容变暗,弹出窗口外的水龙头导致弹出窗口   驳回。如果你不想要点击来消除弹出窗口,你可以   将一个或多个视图分配给的passthroughViews属性   关联的UIPopoverPresentationController对象,您可以获取   来自popoverPresentationController属性。

     

在水平紧凑的环境中,此选项的行为与   UIModalPresentationFullScreen。

     

适用于iOS 8.0及更高版本。

参考:https://developer.apple.com/documentation/uikit/uiviewcontroller/1621355-modalpresentationstyle

答案 3 :(得分:2)

你必须确保使用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)
        }
    }
}

答案 4 :(得分:1)

使用 UIPickerview 是根据Apple的人机界面指南实施它的正确方法

如果您在移动版Safari中选择下拉菜单,则会显示 UIPickerview ,以便让用户选择下拉项目。

或者

您可以使用 UIPopoverController ,直到iOS 9已弃用,但最好坚持使用 UIModalPresentationPopover 视图你也想要表演

您可以使用 UIActionsheet 来展示这些项目,但最好使用 UIAlertViewController ,选择 UIActionSheetstyle ,以显示前者在最新版本中已弃用