Я уже давно работаю над этой проблемой и не могу найти решение, которое работает. Я создаю игру, где каждому игроку присваивается случайное имя. В конце игры, если у одного или нескольких игроков есть баллы, которые квалифицируют их для всех лидеров времени, я хочу пройти через всех игроков, отобразить UIAlertView, где они могут ввести свое настоящее имя, а затем сохранить это имя обратно в мой объект игрока. Тем не менее, я не могу заставить цикл остановиться, показать вид предупреждения, дождаться ответа и продолжить. Кто-нибудь может мне помочь?IOS: Как использовать UIAlertView внутри цикла
Heres мой цикл:
for (int i = 0; i < [leaderboard count]; i++) {
NSDictionary *player = [[NSDictionary alloc] initWithDictionary:[leaderboard objectAtIndex:i]];
if ([[player valueForKey:@"isCurrentPlayer"] isEqualToString:@"YES"]){
// getRealPlayerName takes in a name parameter and displays an alertview
[self performSelectorOnMainThread:@selector(getRealPlayerName:) withObject:[player valueForKey:@"playerName"] waitUntilDone:YES];
// nameFromAlertView is a local variable that is set when the user enters a name in the alertview.
[player setValue:[self nameFromAlertView] forKey:@"playerName"];
[player setValue:@"" forKey:@"isCurrentPlayer"];
}
}
Правильно ли я понимаю, что некоторые игроки будут использовать одно устройство? – vikingosegundo
@vikingosegundo, Да, игроки будут использовать те же устройства. – Weston
Вы _can_ делаете это в цикле (с помощью семафора и фоновой очереди), только вы не хотите, поверьте мне. Вы пытаетесь бороться с каркасом, пусть он вам поможет. – magma