【问题标题】:collect data from 3 row UIPickerView从 3 行 UIPickerView 收集数据
【发布时间】:2012-06-22 08:51:32
【问题描述】:

UIPickerView 中有 3 行数据,即 timeHour、timeMinute、timeSecond。从UIPickerView中选择后如何收集数据,在我的labelTime显示?我在下面使用此代码,但它只收集我的第一行数据(timeHour)。

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    labelTime.text = [timeHour objectAtIndex:[picker selectedRowInComponent:0]];
}

我想在 labelTime 中显示的是这样的 -> hh : mm : ss (假设是 99 : 59 : 59)。以及我如何在每次启动 UIPickerView 后将其重置为 00 : 00 : 00?

对不起,我是新来的。谢谢你的帮助。

【问题讨论】:

  • 你能把你的选择器视图的屏幕截图放在这里吗?我有点困惑..

标签: iphone ios5 xcode4.3


【解决方案1】:

实际上,我一直认为选择器中的项目是列:

每当有人在您的选择器中旋转不同的列之一时,都会调用您正在谈论的函数。

我希望你需要类似下面的东西

NSString* hour = [timeHour objectAtIndex:[picker selectedRowInComponent:0]];
NSString* min = [timeMin objectAtIndex:[picker selectedRowInComponent:1]];
NSString* sec = [timeSec objectAtIndex:[picker selectedRowInComponent:2]];
labelTime.text = [hour stringByAppendingFormat:@":%@:%@", min, sec];  // don't forget to 0-pad if desired

至于每次将视图重置为 00:00:00,正如 prasad 所说,在您拥有的委托代码之外,您可以调用 reloadAllComponents,然后在您的 dataSource 中,将返回的初始值全为零。

【讨论】:

    【解决方案2】:

    只需编写此代码。

    [yourPickerView reloadAllComponents];
    

    我认为这对你会有帮助。

    【讨论】:

    • 对不起,我已经把它放进去了,但没有任何变化。每次我打电话给我的选择器,再次关闭它,然后再次打开它,位置仍然相同,不会重置。或者,我把它放错地方了吗?有什么建议吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 2020-07-30
    相关资源
    最近更新 更多