我有一个开关语句,它将适当地将文本添加到11 UILabels。但是,它现在变得有点长了,而且相同代码的副本太多了。怎样才能进一步改善呢?我可以做一个标签数组,然后通过一个for循环访问它们吗?
下面是代码开关语句:
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;
}谢谢你抽出时间丹。
发布于 2014-05-18 15:01:00
另一种选择是使用switch语句的"fall of“属性。
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;
}发布于 2014-05-18 14:53:08
把你的UILabel放在一个NSArray里。然后可以迭代数组。在Interface中,您可以向IBOutletCollection添加一组元素,这很方便(只要将多个东西拖到一起,比如创建一个IBOutlet,它将提供一个IBOutletCollection)。
请注意,IBOutletCollection没有按订单作出任何承诺。因此,您可能需要在IB中添加一个tag来跟踪它们。我经常用tag in viewDidLoad对我的收藏品进行排序。
如果以编程方式构建此系统,则只需将它们放在数组中即可。
有时候跟踪tag还是太痛苦了,所以我作弊了一点。我只需使用subviews来遍历所有视图并找到我的标签。然后我按y-原点对它们进行排序,并将它们放在一个数组中。当然,这是有点脆弱的,需要很多关于您的视图的特殊知识,但是视图控制器应该拥有这些知识。我偶尔会使用这种技术来创建一个混合的IB /编程接口,它允许我在IB中放置所有的东西,但是在代码中连接所有的东西(动作、字体选择等等)。当有许多几乎相同的UI元素时,我尤其会这样做。
发布于 2014-05-18 14:58:31
使用两个数组: 1.用于所有标签,2用于计数。
你已经有了第2部分,所以:
首先,在您的班上有一个NSArray *_labels。
然后在你的viewDidLoad做_labels = @[label1, label2, label3];
那就换个
for(int i = 0; i < number_sorted.count; i++) {
((UILabel*)_labels[i]).text = [NSString stringWithFormat:@"%ld", [number_sorted[i] integerValue]];
}https://stackoverflow.com/questions/23723211
复制相似问题