2012-05-14 3 views
1

У меня есть массив с 26 алфавитами и вторым массивом с 3 UIButtons. Я хочу взять случайные 3 алфавита из массива и установить их случайным образом в качестве заголовков из 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];       
    } 

Через использование этого кода я видел только один alphet в одном UIButton..please подсказать один, как я могу выбрать 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

Thanx за помощь я редактировать code.but пока я не имею возможности получить случайное alphbet назначить в качестве названий uibuttons. – jamil

+0

i Попробуйте оба, но не работайте. – 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. это должно сработать. Надеюсь, поможет. happy coding :)

+0

u может использовать 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

Смежные вопросы