Цель C: изображение UIButton с NSArray в случайном порядке - PullRequest
1 голос
/ 21 марта 2012

Краткая идея о потоке:

Я имею, скажем, минимум 1 и максимум 18 записей в моей базе данных с текстом и изображением, из которого я должен выбрать изображения и произвольно разместить 3 одинаковых в 3UIButtons, среди которых одно изображение должно совпадать с моим вопросом.то есть 1 - это ответ, а другие 2 - отвлекающие факторы.

Например: Вопрос: где Apple?Теперь среди множества изображений я хочу разместить любые 3 изображения на 3 кнопках UIB (1 ответ, то есть Apple и 2 отвлекающих устройства) в случайном порядке, и при выборе кнопки UIB она должна подсказать мне, правильный ли это ответ или нет.

Я реализую приведенный ниже код для размещения UIImages в случайном порядке:

-(void) placeImages 
{
    NSMutableArray *images = [NSMutableArray arrayWithArray:arrImg];

    NSArray *buttons = [NSArray arrayWithObjects:btn1,btn2,btn3, nil];
    for (UIButton *btn in buttons)
    {
        int randomIndex= random() % images.count;
        UIImage *img = [images objectAtIndex:randomIndex];
        [btn setImage:img forState:UIControlStateNormal];
        [images removeObjectAtIndex:randomIndex];                        
    }
}

Но я застрял в точке, которая заключается в том, как мне получить 1 UIButton изображение с ответом и другиекак отвлекающие также, что как я должен поддерживать индекс изображения из NSArray?Пожалуйста, ведите меня.Спасибо.

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Разбейте его на более простые задачи:

  1. Выберите три изображения из набора так, чтобы одно было ответом, а два других не совпадали и не отвечали.

  2. Назначьте изображения кнопкам в произвольном порядке.

  3. Запомните, какая кнопка соответствует правильному ответу.

Итак, допустим, что всему набору изображений присвоен уникальный идентификатор 0..n-1.Вы знаете, какое изображение является ответом на данный вопрос, поэтому добавьте его идентификатор в массив.Случайным образом выберите еще два идентификатора и добавьте их в массив, проверив, что ни один из них не находится в массиве.Сохраните идентификатор для правильного ответа в переменной экземпляра.Это решает проблему №1.

Теперь перетасуйте массив.На SO есть несколько вопросов , которые охватывают , поэтому я не буду здесь это объяснять.Присвойте первый идентификатор в массиве свойству tag первой кнопки;установите изображение этой кнопки на изображение для этого идентификатора.Аналогичным образом установите вторую кнопку со вторым идентификатором из массива и его изображения, и снова для третьей кнопки.Убедитесь, что все три кнопки имеют одинаковую цель и действие.Проблема № 2 решена.

В методе действия для кнопок получите tag нажатой кнопки (это параметр sender для действия).Сравните тег с идентификатором правильного ответа, который вы ранее сохранили в переменной экземпляра.Если они совпадают, пользователь был прав.Проблема № 3 решена.

1 голос
/ 21 марта 2012

установите вашу первую кнопку как Apple (правильный ответ), установите остальные кнопки как случайные неправильные ответы, затем расположите кнопки случайным образом в вашем приложении

...