我正在尝试以最简单的方式用几分钟和几小时填充我的选择器视图。我正在实现一个自定义选择器,因此将UIDatePicker的模式设置为UIDatePickerModeTime成为不可能。

iOS中是否有可用的函数来检索数据集,还是我只需要用for循环分别用0-12(12小时制)和0-60的小时和分钟分别用硬编码值初始化数组,就可以了?

我目前正在像这样填充数组:

#pragma mark - Lazy Loading
-(NSArray *)hourValues{
    if(!_hourValues){
        NSMutableArray *hours = [[NSMutableArray alloc] init];
        for(int i = 0; i < 12; i++){
            [hours addObject:[NSNumber numberWithInt:i]];
        }
        _hourValues = hours;
    }
    return _hourValues;
}
-(NSArray *)minuteValues{
    if(!_minuteValues){
        NSMutableArray *minutes = [[NSMutableArray alloc] init];
        for(int i = 0; i < 60; i++){
            [minutes addObject:[NSNumber numberWithInt:i]];
        }
        _minuteValues = minutes;
    }
    return _minuteValues;
}
-(NSArray *)amPmValues{
    if(!_amPmValues){
        _amPmValues = @[@"am", @"pm"];
    }
    return _amPmValues;
}

我不喜欢硬编码的值。

理想情况下,我希望能够执行以下操作:
hours = [NSDate NS12HourSetArray];
minutes = [NSDate NS60MinuteArray];

最佳答案

我认为您有3种选择:

  • 编写脚本/自动创建文本数据并在运行时加载它,您可以在python / bash和plist中轻松地做到这一点。
  • 使用旧的for循环手动进行操作。我建议。
  • 或您可以分别使用NSIndexSetNSRange对象在任意范围内创建索引集。

  • 例如:
    NSIndexSet *minutesIndexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 60)];
    

    然后,您可以使UI直接从索引集加载,或者再次枚举索引集并为其索引填充数组。

    在这两种方式中,您最终要做的是遍历循环以手动填充阵列。唯一只做负载的是第一个。

    07-28 03:43
    查看更多