2012-05-14 57 views
1

我有一個數組26個字母和第二個數組與3 UIButtons。我想從數組中隨機取3個Alphabets並隨機設置它們作爲3個UIButtons的標題。這裏有代碼。把NSArray的隨機對象放到隨機UIButtons標題的NSArray

-(void)placeImages { 
    NSMutableArray *alphabetarr=[[NSArray alloc] 
    initWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L", 
    @"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z",nil]; 
    NSMutableArray *buttons = [NSArray arrayWithObjects:btn1, btn2, btn3, nil]; 
    for (UIButton *btn in buttons) { 
      int randomIndex= arc4random() % [alphabetarr count]; 
      NSString* titre = [alphabetarr objectAtIndex:randomIndex]; 
      [btn setTitle:titre forState:UIControlStateNormal]; 
      [alphabetarr removeObjectAtIndex:randomIndex];       
    } 

通過使用此代碼我看到在一個UIButton..please只有一個alphet推薦任一項我怎樣才能挑從數組3隨機alphatbet和設置這些3個隨機字母作爲陣列的3個UIButtons標題。

+0

看看是否有分配的回憶按鈕.. –

回答

2

試試這個來產生隨機字符。無需爲此設置數組。

char c = (char)('A' + arc4random_uniform(25)) 

Refer here

+0

thanx現在每個人都可以正常工作。 – jamil

1

removeObjectAtIndex:NSMutableArray方法,而不是NSArray的。更改您的alphabetarr類型,問題應該消失。

使用rand()arc4random()函數進行數字生成。 Here你可以看到兩者之間的比較。

+0

感謝名單,幫助我編輯code.but直到我無法獲得隨機alphbet要指定爲uib​​uttons的標題。 – jamil

+0

我嘗試但不工作。 – jamil

+0

你確定btn1,bnt2 ...指向不同的按鈕對象(在不同的座標)? – Alexander

2
-(void)placeImages { 
NSMutableArray *alphabetarr=[[NSMutableArray alloc] 
initWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L", 
@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z",nil]; 
NSMutableArray *buttons = [NSMutableArray arrayWithObjects:btn1, btn2, btn3, nil]; 
for (UIButton *btn in buttons) { 
     int randomIndex= arc4random() % [alphabetarr count]; 
     NSString* titre = [alphabetarr objectAtIndex:randomIndex]; 
     [btn setTitle:titre forState:UIControlStateNormal]; 
     [alphabetarr removeObjectAtIndex:randomIndex];       
} 

分配是NSArray的,而不是NSMutableArray裏的。這應該工作。希望能幫助到你。快樂編碼:)

+0

你可以使用random()而不是arc4random() –

1

它看起來像問題是,你每次用一個新字母覆蓋按鈕文本的內容。您需要保存按鈕中的前一個文本,並每次追加新的字符,而不是用每個新的字母重新設置。

//gather random letter 
NSString *titre = [alphabetarr objectAtIndex:randomIndex]; 

//gather current string 
NSMutableString *currentString = [[btn titleLabel] text]; 

//append string 
[currentString appendString:titre]; 

//set button text 
[btn setTitle:currentString forState:UIControlStateNormal]; 

這應該每次都追加一個新的字母的按鈕,而不是將其設置爲從隨機返回數組的最後一個字母。

希望幫助:)

+0

Thanx爲每一個現在它的工作很好。 – jamil