jjzjj

iphone - UIPickerView 看起来像 UIDatePicker 但有几秒钟

coder 2023-07-25 原文

我正在制作一个计时器应用程序,需要向用户显示小时、分钟和秒。我尝试使用 UIDatePicker 但它只显示小时和分钟作为选择。不是秒。在网上做了一些研究后,我发现在 UIDatePicker 中无法获得秒数,我不得不从头开始编写自己的 UIPickerView

所以我的问题是,是否有这样的示例代码,即有人写了一个 CustomUIPickerView 几个小时,分钟和秒,我可以合并到我的项目中? UIDatePicker 有一个漂亮的 Hours & Mins 文本叠加层,当用户旋转表盘时它会保持原样。如果有人也将其添加到他们的自定义选择器中,那就太好了。如果不需要,我不想从头开始编写自定义 UIPickerView。谢谢。

最佳答案

好的伙计们,这是在您的 UIPickerView 中获取小时/分钟/秒的代码。您可以添加 3 个标签,并有策略地将它们放在选取器上。我也附上了一张照片。

如果你喜欢这个答案,请给它打分!优秀的开发人员会分享知识,而不是像某些人建议的那样隐藏知识。祝您编码愉快!

在你的 header.h 文件中放这个

@interface v1AddTableViewController : UITableViewController
{

    IBOutlet UIPickerView *pickerView;    
    NSMutableArray *hoursArray;
    NSMutableArray *minsArray;
    NSMutableArray *secsArray;

    NSTimeInterval interval;

}

@property(retain, nonatomic) UIPickerView *pickerView;
@property(retain, nonatomic) NSMutableArray *hoursArray;
@property(retain, nonatomic) NSMutableArray *minsArray;
@property(retain, nonatomic) NSMutableArray *secsArray;

在你的 .m 文件中放这个

@synthesize pickerView;
@synthesize hoursArray;
@synthesize minsArray;
@synthesize secsArray;
@synthesize interval;

- (void)viewDidLoad
{
    [super viewDidLoad];


    //initialize arrays
    hoursArray = [[NSMutableArray alloc] init];
    minsArray = [[NSMutableArray alloc] init];
    secsArray = [[NSMutableArray alloc] init];
    NSString *strVal = [[NSString alloc] init];

    for(int i=0; i<61; i++)
    {
        strVal = [NSString stringWithFormat:@"%d", i];

        //NSLog(@"strVal: %@", strVal);

        //Create array with 0-12 hours
        if (i < 13)
        {
            [hoursArray addObject:strVal];
        }

        //create arrays with 0-60 secs/mins
        [minsArray addObject:strVal];
        [secsArray addObject:strVal];
    }


    NSLog(@"[hoursArray count]: %d", [hoursArray count]);
    NSLog(@"[minsArray count]: %d", [minsArray count]);
    NSLog(@"[secsArray count]: %d", [secsArray count]);

}


//Method to define how many columns/dials to show
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 3;
}


// Method to define the numberOfRows in a component using the array.
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent :(NSInteger)component 
{ 
    if (component==0)
    {
        return [hoursArray count];
    }
    else if (component==1)
    {
        return [minsArray count];
    }
    else
    {
        return [secsArray count];
    }

}


// Method to show the title of row for a component.
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{

    switch (component) 
    {
        case 0:
            return [hoursArray objectAtIndex:row];
            break;
        case 1:
            return [minsArray objectAtIndex:row];
            break;
        case 2:
            return [secsArray objectAtIndex:row];
            break;    
    }
    return nil;
}


-(IBAction)calculateTimeFromPicker
{

    NSString *hoursStr = [NSString stringWithFormat:@"%@",[hoursArray objectAtIndex:[pickerView selectedRowInComponent:0]]];

    NSString *minsStr = [NSString stringWithFormat:@"%@",[minsArray objectAtIndex:[pickerView selectedRowInComponent:1]]];

    NSString *secsStr = [NSString stringWithFormat:@"%@",[secsArray objectAtIndex:[pickerView selectedRowInComponent:2]]];

    int hoursInt = [hoursStr intValue];
    int minsInt = [minsStr intValue];
    int secsInt = [secsStr intValue];


    interval = secsInt + (minsInt*60) + (hoursInt*3600);

    NSLog(@"hours: %d ... mins: %d .... sec: %d .... interval: %f", hoursInt, minsInt, secsInt, interval);

    NSString *totalTimeStr = [NSString stringWithFormat:@"%f",interval];

}

关于iphone - UIPickerView 看起来像 UIDatePicker 但有几秒钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999575/

有关iphone - UIPickerView 看起来像 UIDatePicker 但有几秒钟的更多相关文章

  1. ruby-on-rails - ruby:将数组的每个元素用附加引号引起来 - 2

    我有以下字符串:a="001;Barbara;122"我拆分成字符串数组:names=a.split(";")names=["001","Barbara","122"]我应该怎么做才能将每​​个元素另外用''引号括起来?结果应该是names=["'001'","'Barbara'","'122'"]我知道这听起来很奇怪,但我需要它在ruby​​onrails中进行数据库查询。出于某种原因,如果我的名字在“”引号中,我将无法访问数据库记录。我在数据库中确实有mk1==0006但rails不想以某种方式访问​​它。但是,它确实访问1222。sql="SELECTmk1,mk2,pk1,pk

  2. ruby-on-rails - 为什么我的 Rails 服务器渲染时间不加起来? - 2

    我的Rails应用程序在暂存服务器上运行速度非常慢,这让我遇到了一些麻烦。最令人困惑的是每个请求的日志输出的最后一行。看起来View和数据库时间甚至不接近整个渲染时间。在一页上,完成时间大约1000毫秒,View大约450毫秒,数据库大约20毫秒。渲染页面所需的其余时间从何而来? 最佳答案 当事情变得神秘时......分析器是你的friend!分析器将统计哪些方法被调用最多以及每个方法调用花费多长时间。ruby-prof当我在RubyLand时,它会帮我解决这个问题,它会生成一个漂亮的调用图(如果需要,可以是html格式),这使得查

  3. ruby - 什么是最像 Ruby 的生成 3 个正整数加起来等于 100 的唯一组合的方法 - 2

    条件:a+b+c=100a,b,cpositiveintegersor0期望的输出:[[0,0,100],[0,1,99],...#allotherpermutations[99,1,0],[100,0,0]] 最佳答案 我会写:(0..100).flat_map{|x|(0..100-x).map{|y|[x,y,100-x-y]}}#=>[[0,0,100],[0,1,99]],...,[99,1,0],[100,0,0]]站点注释1:这是一个经典示例,其中列表推导式大放异彩(如果某处有条件则更是如此)。由于Ruby没有LC,我

  4. ruby floats 根据顺序加起来不同的值 - 2

    所以这很奇怪。我在Ruby1.9.3中,float加法没有像我预期的那样工作。0.3+0.6+0.1=0.99999999999999990.6+0.1+0.3=1我在另一台机器上试过了,得到了同样的结果。知道为什么会发生这种情况吗? 最佳答案 浮点运算是不精确的:它们将结果四舍五入到最接近的可表示浮点值。这意味着每个float操作是:float(aopb)=mathematical(aopb)+rounding-error(aopb)如上式所示,舍入误差取决于操作数a和b。因此,如果您以不同的顺序执行操作,float(float(

  5. iphone - 扩展 restful_authentication/AuthLogic 以支持匿名 iPhone 的延迟登录的最佳方法是什么? - 2

    我正在构建一个与RubyonRails后端对话的iPhone应用程序。RubyonRails应用程序还将为Web用户提供服务。restful_authentication插件是提供快速和可定制的用户身份验证的绝佳方式。但是,我希望iPhone应用程序的用户在新列中存储一个由手机的唯一标识符([[UIDevicedevice]uniqueIdentifier])自动创建的帐户。稍后,当用户准备好创建用户名/密码时,帐户将更新为包含用户名和密码,iPhone唯一标识符保持不变。用户在设置用户名/密码之前不能访问该网站。然而,他们可以使用iPhone应用程序,因为该应用程序可以使用它的标识符

  6. iphone - 设计和 Rails 3 中的 http 身份验证 - 2

    我有一个使用deviseonrails3的应用程序。我想启用http身份验证,以便我可以从iPhone应用程序向我的网络应用程序进行身份验证。如何从我的iPhone应用程序进行身份验证以进行设计?这安全吗?还是我应该进行不同的身份验证? 最佳答案 从设计的角度来看,您有3个选择:1)使用基本的http身份验证:您的iPhone应用程序有一个secretkey-这是在您的iPhone应用程序代码中烘焙的-用于对网络应用程序的每个请求进行身份验证。Google搜索:“设计基本的http身份验证”2)您可以通过在您的iPhone应用程序中

  7. ruby - 如何通过正则表达式查找括号内的文本,但有一些异常(exception)? - 2

    我有一个正则表达式/^\[(text:\s*.+?\s*)\]/mi目前可以捕获以text开头的括号中的文本:。以下是它的工作示例:[text:hereismytextthatiscapturedwithinthebrackets.]现在,我想添加一个异常(exception),以便它允许某些括号,如下例所示:[text:hereismytextthatiscapturedwithinthebracketsandalsoinclude![](/some/path)]基本上,我需要它允许匹配中的![](/some/path)括号。如有任何帮助,我们将不胜感激。谢谢。更新:下面是括号内的文

  8. ruby - 我在 "gem list"中看到 gem 但有 "no such file to load" - 2

    我在Ubuntu10上sudoapt-getinstallruby1.9.1-full然后下载rubygem1.3.7的源码并安装sudorubysetup.rb然后,例如,安装sinatrasudogeminstallsinatra最后打开irb并输入require"rubygems"require"sinatra"得到错误LoadError:nosuchfiletoload--sinatrafrom(irb):2:in`require'from(irb):2from/usr/bin/irb:12:in`' 最佳答案 我正好遇到了

  9. u盘/U盘启动盘插入电脑后,不显示文件,但有保留占用内存 - 2

            相信有一部分小伙伴肯定遇到过,U盘在电脑上,不显示文件,U盘为空;但是U盘内存显示,这些文件可能存在,因为内存是真实存在的。方案如下:1.卸载usb设备2.更改驱动器磁盘号3.更新驱动4.勾选隐藏的驱动器&&勾选显示隐藏的文件夹「以下两项虽然是方法,但是不到万不得已的情况下不建议使用,后续我也会继续更新这篇文档,尽量让大家避开这个坑。」5.diskgenuis软件6.数据恢复软件好了,废话不多说,基操都排除之后,下面我们来看一下解决办法。方案1.卸载usb连接设备1.右键「此电脑」,点击「管理」进入了计算机管理窗口,如图:2.点击「设备管理器」 点击「通用串行总线控制器」不出意

  10. ruby - 无法接受套接字连接。看起来 Zeus 已经在运行了。如果不是,请删除 .zeus.sock 并重试 - 2

    在处理相当大的Rails项目时,Zeus是一个很棒的工具,可以缩短Rails应用程序的加载时间并运行测试套件。但是过了一段时间后,我开始在启动zeus的所有项目中都遇到了这个问题:我做了一些研究并尝试了一些资源来解决这个错误,但都没有用。如果有人能指出解决此问题的正确方向,我将不胜感激。我在MacOSX10.8.2上谢谢 最佳答案 这两条评论实际上为我指明了正确的方向:如果ls-a显示.zeus.sock文件而不是做一个简单的删除解决问题是这样的:rm.zeus.sock 关于ruby-

随机推荐