首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >锅炉板代码转换语句太多- iOS

锅炉板代码转换语句太多- iOS
EN

Stack Overflow用户
提问于 2014-05-18 14:48:49
回答 3查看 263关注 0票数 4

我有一个开关语句,它将适当地将文本添加到11 UILabels。但是,它现在变得有点长了,而且相同代码的副本太多了。怎样才能进一步改善呢?我可以做一个标签数组,然后通过一个for循环访问它们吗?

下面是代码开关语句:

代码语言:javascript
复制
switch ([number_sorted count]) {

            case 1:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                break;

            case 2:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                break;

            case 3:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                break;

            case 4:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                break;

            case 5:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                break;

            case 6:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
                break;

            case 7:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
                label_7.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[6] integerValue]];
                break;

            case 8:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
                label_7.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[6] integerValue]];
                label_8.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[7] integerValue]];
                break;

            case 9:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
                label_7.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[6] integerValue]];
                label_8.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[7] integerValue]];
                label_9.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[8] integerValue]];
                break;

            case 10:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
                label_7.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[6] integerValue]];
                label_8.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[7] integerValue]];
                label_9.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[8] integerValue]];
                label_10.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[9] integerValue]];
                break;

            case 11:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
                label_7.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[6] integerValue]];
                label_8.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[7] integerValue]];
                label_9.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[8] integerValue]];
                label_10.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[9] integerValue]];
                label_11.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[10] integerValue]];
                break;

            default:
                break;
        }

谢谢你抽出时间丹。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-18 15:01:00

另一种选择是使用switch语句的"fall of“属性。

代码语言:javascript
复制
switch ([number_sorted count]) {
    case 11:
        label_11.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[10] integerValue]];
    case 10:
        label_10.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[9] integerValue]];
    case 9:
        label_9.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[8] integerValue]];
    case 8:
        label_8.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[7] integerValue]];
    case 7:
        label_7.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[6] integerValue]];
    case 6:
        label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
    case 5:
        label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
    case 4:
        label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
    case 3:
        label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
    case 2:
        label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
    case 1:
        label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
    default:
        break;
}
票数 4
EN

Stack Overflow用户

发布于 2014-05-18 14:53:08

把你的UILabel放在一个NSArray里。然后可以迭代数组。在Interface中,您可以向IBOutletCollection添加一组元素,这很方便(只要将多个东西拖到一起,比如创建一个IBOutlet,它将提供一个IBOutletCollection)。

请注意,IBOutletCollection没有按订单作出任何承诺。因此,您可能需要在IB中添加一个tag来跟踪它们。我经常用tag in viewDidLoad对我的收藏品进行排序。

如果以编程方式构建此系统,则只需将它们放在数组中即可。

有时候跟踪tag还是太痛苦了,所以我作弊了一点。我只需使用subviews来遍历所有视图并找到我的标签。然后我按y-原点对它们进行排序,并将它们放在一个数组中。当然,这是有点脆弱的,需要很多关于您的视图的特殊知识,但是视图控制器应该拥有这些知识。我偶尔会使用这种技术来创建一个混合的IB /编程接口,它允许我在IB中放置所有的东西,但是在代码中连接所有的东西(动作、字体选择等等)。当有许多几乎相同的UI元素时,我尤其会这样做。

票数 2
EN

Stack Overflow用户

发布于 2014-05-18 14:58:31

使用两个数组: 1.用于所有标签,2用于计数。

你已经有了第2部分,所以:

首先,在您的班上有一个NSArray *_labels

然后在你的viewDidLoad做_labels = @[label1, label2, label3];

那就换个

代码语言:javascript
复制
for(int i = 0; i < number_sorted.count; i++) {
    ((UILabel*)_labels[i]).text = [NSString stringWithFormat:@"%ld", [number_sorted[i] integerValue]];
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23723211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档