Я в некотором роде здесь, так как я пытался сделать много вещей для достижения этой цели и потерпел неудачу.
Что я хочу сделать: У меня есть NSString в моем приложении, котороеявляется ответом на вопрос к раунду в викторине.Мои ответы хранятся в NSMutableArray.Эти ответы выбираются случайным образом. У меня есть 4 кнопки в моем приложении, которые являются вариантами (возможные ответы) для раунда.Я не хочу иметь несколько ответов!
Что я пробовал:
- Я пытался удалить ответ после сохранения в одномиз-за того, что его нельзя было выбрать снова, но это привело к сбою, поскольку я пытался удалить объект в массиве, используя быстрое перечисление (для цикла).
- Я пытался просто обнаружитьесли заголовок кнопки был равен ответу после установки правильного ответа для определенной кнопки, но это не сработало по какой-то странной причине (без сбоев).По-прежнему будет несколько кнопок с одним и тем же ответом
Что мне нужно помочь с: Как мне не дать ответу быть в нескольких кнопках, чтобы тест не отображалочевидный ответ?
Что мне делать вместо этого?
Спасибо!
Edit1 : Итак, я в значительной степени создал NSArray из моих четырех кнопок UIB.
Я помещаю ответ в случайную кнопку UIB следующим образом:
NSInteger chosen = (arc4random() % 4);
UIButton *randButton = (UIButton *)[buttonArray objectAtIndex:chosen];
[randButton setTitle:imageName forState:UIControlStateNormal];
Затем я называю другие кнопки примерно так, мои кнопки, у которых нет ответа, не имеют названия, поэтому я делаюэто:
- (void)titleButtons {
for (UIButton *buttons in buttonArray) {
if ([[buttons titleForState:UIControlStateNormal] == nil]) {
UIButton *button = buttons;
NSString *superheroString = (NSString*)[superheroArray objectAtIndex:(arc4random() % [superheroArray count])];
[button setTitle:superheroString forState:UIControlStateNormal];
[self checkTitles:button];
}
}
Тогда метод checkTitle выглядит следующим образом, это метод, в котором я пытаюсь убедиться, что 2 кнопки не имеют такой же ответ, как imageName (ответ):
- (void)checkTitles:(UIButton*)button {
if ([[button titleForState:UIControlStateNormal] isEqualToString:imageName]) {
//Duplicate Answer so re-title button
NSString *newTitle = [superheroArray objectAtIndex:(arc4random() % [superheroArray count])];
[button setTitle:newTitle forState:UIControlStateNormal];
//Call same method again to see if new title is still same answer as pic to avoid same answers
[self checkTitles:button];
}
}
}