0

我有一些代码,其中数组中可能有也可能没有对象......这是我正在处理的代码:

        oServices1.text = CustomServicesArray[0];
        oServices2.text = CustomServicesArray[1];
        oServices3.text = CustomServicesArray[2];
        oServices4.text = CustomServicesArray[3];
        oServices5.text = CustomServicesArray[4];
        oServices6.text = CustomServicesArray[5];
        oServices7.text = CustomServicesArray[6];
        oServices8.text = CustomServicesArray[7];
        oServices9.text = CustomServicesArray[8];
        oServices10.text = CustomServicesArray[9];
        oServices11.text = CustomServicesArray[10];
        oServices12.text = CustomServicesArray[11];
        oServices13.text = CustomServicesArray[12];
        oServices14.text = CustomServicesArray[13];
        oServices15.text = CustomServicesArray[14];
        oServices16.text = CustomServicesArray[15];
        oServices17.text = CustomServicesArray[16];
        oServices18.text = CustomServicesArray[17];
        oServices19.text = CustomServicesArray[18];
        oServices20.text = CustomServicesArray[19];
        oServices21.text = CustomServicesArray[20];
        oServices22.text = CustomServicesArray[21];
        oServices23.text = CustomServicesArray[22];

与其检查每个数组对象是否为零,有没有办法可以将 oServices*xx*.text UIFields 放入某种数组中,这样我就可以使用循环了?

4

3 回答 3

2

你知道反身性吗?使用 KVC,您可以节省大量代码和时间:

for(int i=1; i<=23; i++) {
    NSString* key= [NSString stringWithFormat: @"oServices%d"i];
    // Remember that variables should start with a lowercase letter
    [[self valueForKey: key] setText: customServicesArray[i-1] ]; 
}

但是如果你不想在你的storyboard/xib文件中绑定所有这些变量(即使这可能太多了),只需按照你想要的顺序(从1开始)设置每个文本字段的标签,这样你就可以让他们回来使用viewWithTag

// From the UIViewController
for(int i=1; i<=23; i++) {  // Consider defining a constant instead of 23
    [[self.view viewWithTag: i] setText: customServicesArray[i-1] ];
}

我认为最后一个解决方案更好,因为您避免绑定这么多变量。

于 2013-09-16T20:44:30.850 回答
0

您可以使用 OutletCollection 来保存 oServices 并在其上循环。但是请注意,出口集合没有排序,因此您需要事先对它们进行排序(例如在标签标准或位置上)。

如需订购,请参阅此问题

于 2013-09-16T20:30:35.397 回答
0

tagUITextFields 的属性设置为数组中对应的序号。tag 的默认值为 0,因此tag如果 UITextFields 的父视图中有其他视图,则可能需要将该属性设置为 ordinal + 1。在您的文本字段的父视图上,您​​可以使用该viewWithTag:方法来检索适当的 UITextField。

于 2013-09-16T20:32:53.437 回答