如何在 UIPickerView 的第一个组件中显示数据,直到第二个组件中特定行的开始?

Posted

技术标签:

【中文标题】如何在 UIPickerView 的第一个组件中显示数据,直到第二个组件中特定行的开始?【英文标题】:How to not display data in first component of UIPickerView until the start of specific row in second component? 【发布时间】:2017-04-07 05:11:20 【问题描述】:

如果这与以下问题重复,我深表歉意,如果是这样,请标记为:

how to set the data in second component based on first component selection in UIPickerview Not able to reload second compoenent based on value in first component in UIPickerview

首先,说明我目前在我的UIPickerView 中拥有的内容:

我的 UIPickerView 目前有 2 个组件。我会在选择第二个组件的第 3 行之前不显示第一个组件,即Day(s)

我目前设置了以下简单代码:

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

    if component == 0
    
        return times_ARRAY[row]
    
    else
    
        return cycle_ARRAY[row]
    


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

    if component == 0
    

        return times_ARRAY.count
    
    else
    
        return cycle_ARRAY.count
    

我确信这很明显,但我不确定如何应用简单的逻辑。

有人能指出正确的方向吗?

谢谢

【问题讨论】:

【参考方案1】:

声明一个全局变量daySelcted:Bool并更改这2个委托方法。

var daySelcted:Bool = false

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
    if component == 0
    
        if !daySelcted
        
        return 0
        
        return times_ARRAY.count
    
    else
    
        return cycle_ARRAY.count
    


    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
    if component == 1 
    
        if row == 2
        
        daySelcted = true
        
        else
        
            daySelcted = false
        
        pickerView.reloadComponent(0)

    


【讨论】:

这似乎部分工作,但是当我开始滚动组件一时,组件一中的所有行都消失了 好的,我只需要将 row == 2 固定为 row >=2,因为当我在组件 2 中选择 row > 2 时,组件 1 消失了,这看起来对吗? "我希望第一个组件在第二个组件的第 3 行被选中之前不显示,即天。"我以为你想在row == 2 时显示组件 0。改成row >= 2

以上是关于如何在 UIPickerView 的第一个组件中显示数据,直到第二个组件中特定行的开始?的主要内容,如果未能解决你的问题,请参考以下文章

UIPickerView 选择的第一个组件决定第二个组件的内容不同步

如何使用 UIPickerView 设置第二个组件

无法根据 UIPickerview 中第一个组件中的值重新加载第二个组件

(iOS) 如何使 UIPickerView 中的第一个值无法选择?

如何限制 UIPickerView 组件

如何在具有多个组件的 UIPickerView 中为特定组件添加图像?