首页 > 解决方案 > PickerView 不显示 viewForRow - Swift - 以编程方式

问题描述

我正在设置一个 UIPickerView,为了做到这一点,我决定使用返回 UIView 的 UIPickerViewDelegate 的 viewForRow 方法。

pickerView 正确显示,但选择器的“已选择”状态,应该代表使用完整 alpha 渐变选择的元素的状态没有出现。

我只能在元素不处于选定状态时看到它们。

这是实际的代码:

class DurationPickerView: UIPickerView {

let inView : UIView = {
    let view = UIView(frame: .init(x: 0, y: 0, width: 50, height: 50))

    let imageView = UIImageView(image: #imageLiteral(resourceName: "infinity").withRenderingMode(.alwaysOriginal))
    
   
    imageView.tintColor = .white
    view.addSubview(imageView)
    imageView.fillSuperview()


    return view
}()

let tfView : UIView = {
   let view = UIView(frame: .init(x: 0, y: 0, width: 50, height: 50))
    let label = UILabel(text: "24h", font: UIFont(name: "avenir-black", size: 20), textColor: .white, textAlignment: .center
        , numberOfLines: 0)
    view.addSubview(label)
    label.fillSuperview()
    return view
}()

}


extension DurationPickerView : UIPickerViewDelegate{




func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat        {
    return 50
}



func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
      
    switch row {
    case 0:
        return inView
    default:
        return tfView
       }
    }
}



 extension DurationPickerView : UIPickerViewDataSource{


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

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
    return 2
}

}

标签: swiftuiviewuipickerview

解决方案


推荐阅读