2015-09-05 73 views
0

我需要一些幫助來自動化循環(因爲我有500多個按鈕)。代碼是波紋管。謝謝。需要Objective-C循環

MyButton *button1 = [[MyButton alloc] init]; 

button1.name = @"One"; 
button1.controller = self; 
button1.image = [NSImage imageNamed:button1.name]; 

_buttonArray = [[NSMutableArray alloc] init]; 
[arrayController addObject:button1]; 

MyButton *button2 = [[MyButton alloc] init]; 

button2.name = @"Two"; 
button2.controller = self; 
button2.image = [NSImage imageNamed:button2.name]; 

_buttonArray = [[NSMutableArray alloc] init]; 
[arrayController addObject:button2]; 
+1

呃'_buttonArray'的目的是什麼? –

+0

@KhanhNguyen把對象放在數組中 – ShaunArchibald

+0

與'arrayController'不一樣嗎? –

回答

1
for (NSInteger i = 1; i <= 500; ++i) { 
    MyButton *button = [[MyButton alloc] init]; 

    button.name = ...; // Needs a method to convert from i to corresponding English words 
    button.controller = self; 
    button.image = [NSImage imageNamed:button.name]; 

    [arrayController addObject:button]; 
} 

你需要一個算法來i英語單詞轉換(例如1"One"2"Two"等)。這可以通過NSNumberFormatter來完成,numberStyle設置爲NSNumberFormatterSpellOutStyle,更多信息請參閱this

您仍然需要500多張根據按鈕名稱命名的圖像。

2

更好命名與像的圖案的按鈕:「Button125」等

實施例的代碼,而不是測試:

for (int i=1; i<= 500; i++) { 
    [MyClass createButtonNumber:i]; // Where MyClass is the class name this code is in. 
} 

+ (MyButton *)createButtonNumber:(int)number { 
    MyButton *button = [MyButton new]; 
    button.name = [NSString stringWithFormat:@"Button%03i", number]; 
    button.controller = self; 
    button.image = [NSImage imageNamed: button.name]; 
    [arrayController addObject:button]; 

    return button; // Just incase it is needed. 
} 

注:重複爲每個按鈕下面的代碼是沒有意義的,並已被排除在示例代碼之外。

_buttonArray = [[NSMutableArray alloc] init]; 
+0

只是一個想法,我認爲給每個按鈕一個與按鈕編號相對應的標籤可能是有用的。這會使得稍後更清晰/更容易引用,不是嗎? – CaptJak

-1

這只是一個猜測,但UITableViewUITableViewCell可能是你所需要的。我可以認爲沒有理由使用500 UIButtons

+0

這不會嘗試回答這個問題。這應該是最好的評論。 – rmaddy