3

可能重複:
create multiple variables based on an int count
Objective C Equivalent of PHP's 「Variable Variables」動態變量名的iOS

我想在使用一些動態變量名的for循環和難倒爲如何實際參考變量。

我有一系列UILabels標題poll0 - poll8。使用for循環,我將它們的text值設置爲另一個從數組中相應數字引用的值。例如:

for (int i = 0; i < [pollData count]; i++) { 
    label(i value).text = [NSString stringWithFormat:@"%@", [[pollData objectAtIndex:i] toString]]; //sorry for the java-esque method names, just create what I'm used to 
} 

如何使用i值?

回答

5

你不能完全按照你的要求去做。最好的辦法是通過數組把你的標籤在陣列和循環:

NSArray *labels = [NSArray arrayWithObjects:poll0, poll1, poll2, ..., nil]; 
for (UILabel *label in labels) { 
    label.text = [[pollData objectAtIndex:i] toString]; 
} 

你可能也想看看IBOutletCollections因爲他們會允許你組標籤不將書面陣列上面的數組初始化代碼。相反,你把這個在您的.h文件中,然後勾標籤出口達在Interface Builder您的所有標籤:

@property (nonatomic, retain) IBOutletCollection(UILabel) NSArray *labels; 
+0

打我吧:)我總是警惕使用這樣的快速枚舉,但文檔說它應該按照正確的順序進行。 – rosslebeau 2012-03-30 02:35:25

+0

是的,您可以確定快速枚舉確實可以用於數組。我用它所有的時間! – 2012-03-30 02:36:36

+0

我是如何通過IB編程這麼久並且從不知道IBOutletCollections的?我的上帝,我應該給你50%的錢,我將從這個時候開始儲蓄。謝謝! – 2012-03-30 02:44:44

0

您可以創建的UILabel數組**,而不是使用的NSArray的。通過這種方式,你可以使用數組元素而不需要投射到UILabel