如何在 UIPickerview iOS swift 中为组件赋予标题

Posted

技术标签:

【中文标题】如何在 UIPickerview iOS swift 中为组件赋予标题【英文标题】:How to Give title to the component in UIPickerview iOS swift 【发布时间】:2018-02-05 18:39:45 【问题描述】:

我想知道是否可以像我在图片中给出的那样为每个组件赋予标题?...Portrait mode

我已经通过将标签添加为子视图来设置标签,但我还必须在横向模式下对其进行管理,所以这里是...landscape mode

所以,我的问题是可以从特定组件中获取所选标签的框架吗?我的意思是我可以在不添加子视图的情况下管理它,因此我可以在所有设备和所有方向上管理这个标签。

谢谢!!!

【问题讨论】:

检查我的答案。关键是使用 UIPickerView 的 selectedRow 函数 【参考方案1】:

关键是为所选行设置自定义标题。 根据 UIPickerView 中的 selectedRow 函数,您将返回组件中的选定行。因此,您无需担心为此添加额外的标签或处理方向模式。 尝试这样做(title 是您当前在每一行中显示的内容):

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? 
        switch component 
        case 0:
            if self.yourPickerView.selectedRow(inComponent: 0) == row
            
                return "\(title) Hour"
            
            else
            
                return title
            
        case 1:
            if self.yourPickerView.selectedRow(inComponent: 1) == row
            
                return "\(title) Min"
            
            else
            
                return title
            
        case 2:
            if self.yourPickerView.selectedRow(inComponent: 2) == row
            
                return "\(title) Sec"
            
            else
            
                return title
            
        default:

            return ""
        
      

然后终于在didSelectRow

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

    // your code
    pickerView.reloadAllComponents()
  

虽然这不是最好的方法(我猜),但肯定比放置单独的标签和处理方向要好。

【讨论】:

我已经尝试过这个解决方案,但是向上滚动时会产生奇怪的效果。 什么样的效果?

以上是关于如何在 UIPickerview iOS swift 中为组件赋予标题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 应用程序中通过 UIPickerView 实现视图之间的转换?

如何在 iOS7 中使 UIPickerView 不透明?

ios/uipickerview:我如何获得美国各州的选择器视图

如何在 iOS Swift 3 中滚动到 UIPickerView 中的特定行

如何在 iOS 14 中更改 UIPickerView 选择的色调颜色?

如何在iOS 7下更改UIPickerView中文本的颜色?