Как я могу изменить UIImageView в зависимости от выбранного номера? - PullRequest
0 голосов
/ 07 апреля 2019

Я создаю приложение, которое выбирает две случайные карты из колоды из 52 карт.Затем, если одна из карт сильная (в моем случае сильные карты "10" или более сильная), я хочу, чтобы она показала изображение "да" (отметьте галочкой).Если обе карты слабые, то я хочу, чтобы на нем было изображение «нет» (крестик).Я пытался найти проблему, но каждый раз, когда я что-то меняю, возникает новый тип ошибки.

Я пытался установить неизвестный тип вывода в func resultOfShuffle, я пытался создать и назвать выход длямой UIImageView пару раз.

let cardArray = ["1.png", (...), "52.png"] 
 // All of the cards, from 2 to Ace (with every color). Number "33" is a card 10.

...

let cardResults = ["yes.png"]

...

@IBOutlet weak var theResult: UIImageView!

...

func randomizeCards() {

    chooseCardOne = Int.random(in: 0 ... 51)
    chooseCardTwo = Int.random(in: 0 ... 51)

...

func resultOfShuffle(firstCard : Int, secondCard : Int) -> UIImageView {

    if firstCard > 33 {

    return theResult.image = UIImage(named: cardResults)
}
}

И теперь, возвращение последнего func resultOfShuffle неверно - говорит мне: Использование неразрешенного идентификатора 'theResult' . Iтакже пытался найти решение этой проблемы, но это довольно сложно, и я не понимаю.

Вот так выглядит мое приложение:

https://imgur.com/a/kjdcqcO

1 Ответ

0 голосов
/ 07 апреля 2019

Каждый оператор выполняется в одном и том же ViewController? Он должен распознавать theResult как UIImageView, затем.

Обновление

Проблема, как решено в комментариях, основана на объеме объявления функции. Поскольку он объявлен вне класса, в котором определен theResult, он не может получить к нему доступ.

Решением может быть передача переменной в качестве аргумента функции или объявление функции в той же области видимости переменной - внутри ViewController.

Другие заметки

В любом случае, вы пытаетесь вернуть что-то с помощью этой строки:

theResult.image = UIImage(named: cardResults)

, который не оценивает тип, а просто устанавливает изображение вида на то, что в cardResults. Следовательно, вы не должны ничего возвращать, а просто используете эту функцию для обновления содержимого представления - это означает, что вы должны использовать тип возврата Void.

Кроме того, вы передаете инициализатору изображений тип [String], в то время как вы просто должны передать String.

Попробуйте что-то вроде этого:

func resultOfShuffle(firstCard : Int, secondCard : Int) {

    if firstCard > 33 {
        theResult.image = UIImage(named: cardResults[0])
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...