Цель C - Случайный выбор XIB - PullRequest
0 голосов
/ 11 июля 2011

Я уже отправил еще один вопрос по этому поводу, но, похоже, никто не знал, как это сделать.

Я хочу, чтобы мое приложение выбрало для меня случайный XIB-файл, но не используйте те, которые уже были выбраны случайным образом.

Итак, вот то, что я настроил на данный момент, похоже, это работает, но я должен продолжать нажимать кнопку снова и снова, пока не найдет тот, который не используется.

-(IBAction)continueAction:(id)sender{

random = arc4random() % 2;
if (random == 0 && usedQ2 == 0) {
    Question_2 *Q2 = [[Question_2 alloc] initWithNibName:@"Question 2" bundle:nil];

    Q2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:Q2 animated:YES];
    [Q2 release];

}
else if (random == 1 && usedQ3 == 0) {
    Question_3 *Q3 = [[Question_3 alloc] initWithNibName:@"Question 3" bundle:nil];

    Q3.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:Q3 animated:YES];
    [Q3 release];
}


}

Итак, как вы можете видеть, я выбираю его из случайного числа, а из их - того, которое ему соответствует.

Тогда вы можете видеть, что у меня есть другая часть моего оператора if, проверяющая, чтобы убедиться, что он не использовался ранее.

каждый файл NIB имеет свой собственный usedQ (независимо от того, что это за Q), и когда этот файл NIB загружается, он использует этот usedQ как 1.

Я думаю, что я мог бы добиться этого, но чтобы избавиться от постоянного нажатия кнопки, мне придется поместить множество операторов else с большим количеством операторов else в них.

Я также попытался запустить

random = arc4random() % 2;

в операторе while и for, я надеялся, что он будет искать номер, пока тот, который не будет использован, не будет найден без удачи.

Любая помощь? спасибо!

1 Ответ

2 голосов
/ 11 июля 2011
  • Почему бы вам не сделать изменяемый массив и заполнить его именами всех ваших перьев.
  • Затем прочитайте счетчик массива и сгенерируйте случайное число в этом диапазоне.
  • Извлеките имя пера по этому индексу и удалите его из массива.
  • повторите шаги 2-3.
//Setup your list at an appropriate place 

NSMutableArray * nibs = [[NSMutableArray alloc] initWithObjects: @ "One Nib", @ "Another Nib",@ "Last Nib", ноль];

self.unusedNibs = nibs;// Это должно быть свойство, которое вы объявляете в заголовке.

[выпуск nibs];

-(IBAction)continueAction:(id)sender{

int random = arc4random() % [self.unusedNibs count]; 

NSString * nibName = [self.unusedNibs objectAtIndex: random];

[self.unusedNibs removeObjectAtIndex: random];

//Load nib here.

}
...