如何在iOS中拥有类似spinner视图的android?

时间:2016-12-09 04:30:28

标签: ios uipickerview android-spinner

enter image description here我的要求是向用户显示用户的所有选择选项,以便他可以立即看到所有选项,然后就可以选择那些就像在android中使用微调器视图一样。目前我正在使用UI选择器视图。我正在附上它的屏幕截图。我想要一个微调器或者希望拾取器视图同时显示10个项目,它们当前显示三个相同的高度。这是我的代码:

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
            var myString = view as! UILabel!

            var myStringLength = 0

            if( view == nil) {
                myString = UILabel()
            }
            myString?.textAlignment = .center

            var rowText:String

            if(pickerView==District){
                rowText=districts[row]
            }
            else if(pickerView==block)
            {
                 rowText=blocks[row]
            }
            else if(pickerView==management)
            {
               rowText=managements[row]
            }
            else
            {
                 rowText=categories[row]
            }

            var attributedRowText = NSMutableAttributedString(string: rowText)
            var attributedRowTextLength = attributedRowText.length

            attributedRowText.addAttribute(NSForegroundColorAttributeName, value: UIColor.blue, range: NSRange(location: 0, length: attributedRowTextLength))

            attributedRowText.addAttribute(NSFontAttributeName, value: UIFont(name: "Helvetica", size: 8.0)!, range: NSRange(location: 0 ,length:attributedRowTextLength))

            myString!.attributedText = attributedRowText

            return myString!
        }

2 个答案:

答案 0 :(得分:0)

cocoatouch框架中没有像spinner那样的东西。 您最多可以使用UItableView

进行自定义实现

或者您也可以使用NIDropdown之类的内容来帮助您实施。

答案 1 :(得分:0)

您可以使用表格视图作为下拉列表:

subCategoryTable是表名。按下该下拉按钮创建此表。这里的subCatgBtn就是btn点击后写这段代码。

    subCategoryTable.frame         =   CGRectMake(self.subCatgBtn.frame.origin.x, self.subCatgBtn.frame.origin.y + self.subCatgBtn.frame.size.height, self.subCatgBtn.frame.size.width,CGFloat(numberofrows * 2));
    subCategoryTable.delegate      =   self
    subCategoryTable.dataSource    =   self
    subCategoryTable.tag = 2
    //subCategoryTable.rowHeight = self.subCatgBtn.frame.size.height
    subCategoryTable.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")//this is needed when you use custom cell otherwise no need
    subCategoryTable.separatorColor = UIColor.lightGrayColor()
    subCategoryTable.allowsSelection   = true
    self.view.addSubview(subCategoryTable)

CellforrowIndex:

     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    //        var cell = tableView.dequeueReusableCellWithIdentifier("cell")!
    if tableView.tag == 2
    {
        let cell = tableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell

         //do whatever you want to show.
     }
   }

numberofrows方法:

   func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if tableView.tag == 2
    {

     districts.count
    }
    }

并且在Didselect方法上只需在该按钮上设置您选择的名称。

我不知道您的UI如何设计,您可以使用这个作为下拉列表,它会在您单击该按钮时动态创建。