我有一个带有26个字母的数组和带有3个UIButton的第二个数组。我想从数组中随机取3个字母并随意设置它们作为3个UIButtons的标题。这是代码。
-(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中看到只有一个alphet ..请给出任何一个如何从数组中选择3个随机alphatbet并将这3个随机字母设置为3个UIButtons数组的标题。
答案 0 :(得分: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。这应该工作。希望能帮助到你。快乐的编码:)
答案 1 :(得分:2)
答案 2 :(得分:1)
removeObjectAtIndex:
是NSMutableArray
方法,而不是NSArray
。更改alphabetarr
类型,问题就会消失。
使用rand()
或arc4random()
功能生成号码。 Here你可以看到两者之间的比较。
答案 3 :(得分: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];
每次都应该在按钮上添加一个新字母,而不是将其设置为随机数组返回的最后一个字母。
希望有所帮助:)