【问题标题】:Objective C IOS - int to specific string based on value of sliderObjective C IOS - 基于滑块值的特定字符串
【发布时间】:2012-05-23 01:16:21
【问题描述】:

所以我的视图中有这个滑块,最大值为 13,最小值为 1。取决于您移动滑块的方式,数字会发生变化,并且可以显示在显示滑块当前数字的标签上.

我希望能够将滑块中的 int 更改为字符串;所以如果滑块的进度是 13,我希望标签读取“A+”,12 带有“A”,11 带有“A-”等等。

因为我有多个滑块而不必制作 13 个“if”语句,有没有办法制作一种方法来检查滑块的进度,然后将数字转换为所需的字母等级?

这是我的其中一个滑块的代码

-(IBAction)sliderChanged:(id)sender{
    UISlider *slider = (UISlider *)sender;
    int progress = (int)roundf(slider.value);
    c1Grade.text = [NSString stringWithFormat:@"%d",progress];
}
// c1Grade is the label next to the slider showing the progress

【问题讨论】:

    标签: objective-c ios string int


    【解决方案1】:

    创建一个字符串数组,并将描述放在描述所代表的索引处:@"A+" 将位于索引 13,"A" 将位于索引 12,依此类推。

    NSArray *gradeDescriptions = [NSArray arrayWithObjects: @"", @"F", @"D-", @"D", @"D+", @"C-", @"C", @"C+", @"B-", @"B", @"B+", @"A-", @"A", @"A+", nil];
    NSString *descr = [gradeDescriptions objectAt:sliderPosition];
    

    由于gradeDescriptions数组永远不会改变,你可以初始化一次,并存储在静态变量或ivar中。

    【讨论】:

    • +1:我对您的代码进行了细微更改,以便它使用值 1-13(根据原始问题)而不是 0-13。此外,没有F+这样的等级。 :-)
    • @lnafziger 谢谢 - 我猜没有“F-”,但我不知道没有“F+”!我上学时使用了不同的评分系统,这简直是天赐良机:)
    猜你喜欢
    • 2013-10-21
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2020-03-25
    • 2011-08-29
    • 1970-01-01
    • 2012-11-05
    相关资源
    最近更新 更多