我想創建一個iPhone應用程序中,我有50個按鈕,編號從1到50我要選擇6個隨機按鈕出五十
現在,我要選擇任何隨機6出50按鈕和它的價值(數字)。
我的問題是,
- 如何我只能選擇6個按鈕?
- 現在我正在考慮爲每個按鈕分別取50個不同的IBOutlet和50個IBA,以達到我的目的。有沒有其他更好的選擇,我可以像一個數組按鈕?
- 如何檢索特定按鈕的值?
我想創建一個iPhone應用程序中,我有50個按鈕,編號從1到50我要選擇6個隨機按鈕出五十
現在,我要選擇任何隨機6出50按鈕和它的價值(數字)。
我的問題是,
您可以以編程方式創建按鈕,這樣的(將其添加爲子視圖容器視圖): How do I create a basic UIButton programmatically?
你也可以在它的標籤屬性格式按鈕的數量。
要選擇一個帶給定標籤的按鈕,請使用[containerView viewWithTag:(NSInteger)]。
要選擇6個不同的隨機視圖,您需要生成6個不同的隨機數並使用上述方法。
你可以這樣做。
bool used[51];
for (int i = 1 ; i <= 50 ; ++i)
used[i] = false;
int count = 0;
int resulttags[6];
while (count < 6) {
int index = 1 + random() % 50;
if (!used[index]) {
used[index] = true;
resulttags[count++] = index;
}
}
你應該使用arc4random()而不是random() - http://iphonedevelopment.blogspot.com/2008/10/random-thoughts-rand-vs-arc4random.html – Eugene
爲什麼使用標籤,當你只是可以保持對象? – vikingosegundo
創建一個循環,在其中創建50個按鈕並將它們存儲在可變數組中。
通過在NSMutableArray上創建一個類別並從中選擇前6個對象來最好地對數組進行洗牌。
你會發現,在我的arraytools
一個重要的信息,有幾家便利方法類別丟失:如何按鈕應觸發的方法,是什麼樣子?
如果你有什麼規律一樣-pressedButton<No>:
,for循環可能看起來像:
創建並存儲50個按鈕
self.buttons = [NSMutableArray arrayWithCapacity:50]; //NSMutableArray
for (int i=0; i<50, i++)
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(NSSelectorFromString([NSString stringWithFormat:@"pressedButton%i:", i]))
forControlEvents:UIControlEventTouchDown];
[buttons addObject:button];
}
洗牌,並選擇6個按鈕
[buttons shuffle]; // see arraytools
NSArray *sixButtons = [buttons objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0,6)]];
最後爲sixButtons
中的每個按鈕計算一個幀,並將其添加到指定視圖[view addSubview:button];
如果你沒有爲每個按鈕的方法,你可以通過按鈕陣列內的索引相區別的按鈕。但要小心:在這種情況下,你不應該洗牌。相反,你應該改變它int值unmutable陣列
NSMutableArray *buttonsTemp = [NSMutableArray arrayWithCapacity:50];
for (int i=0; i<50, i++)
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(buttonPressed:)
forControlEvents:UIControlEventTouchDown];
[buttonsTemp addObject:button];
}
self.buttons = [NSArray arrayWithArray:buttonsTemp]; //Member of type NSArray
現在你可以選擇6個按鈕隨機
NSSet *sixButtos = [buttons setWithRandomElementsSize:6];//see arraytools
-buttonPressed:
可能是這樣的:
-(void) buttonPressed:(UIButton *)sender
{
NSUInteger buttonIndex = [buttons indexOfObject:sender];
//Now you can use if or switch to distinguish, what needs to be done
}
這是不太清楚你意思。一次會顯示多少個按鈕?按鈕之間有什麼區別?當他們被挖掘時會發生什麼? – jrturton
是的,你可以創建NSArray或NSMutableArray來存儲你的50個按鈕。 – Maulik
@jrturton,對不起,但這裏是你的問題的答案。基本上會有1到50個數字作爲屏幕上的按鈕,用戶只能從中選擇6個數字。所有的按鈕被命名爲1到50的數字。當用戶點擊六個隨機按鈕時,每個按鈕的值應該存儲在一個單獨的字符串中。 – MayurCM