как использовать оператор if для метки пользовательского интерфейса в Xcode swift

#ios #swift #xcode #swiftui

#iOS #swift #xcode ( код x ) #свифтуи #xcode

Вопрос:

мой код:

     import UIKit

class ViewController: UIViewController {
    

    var score = 0
    
        
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    
    @IBAction func textfield(_ sender: Any) {
         
        
    }
    @IBAction func Button(_ sender: Any) {


    
  let imageName = "FB copy-3.png"
        let image = UIImage(named: imageName)
        let imageView = UIImageView(image: image!)
        imageView.frame = CGRect(x: 64.5, y: 413.5, width: 100, height: 100); view.addSubview(imageView)

        Counterlabel.text = String(score)
        
        if score >= 500 amp;amp; score <= 998 {
            
            score  = 2
            imageView.image = UIImage(named:"500button")
        }
        else if score >= 998 amp;amp; score <= 1995 {
            
            score  = 5
        }
        else if score >= 1995 amp;amp; score <= 4000 {
            
            score  = 10
            imageView.image = UIImage(named:"2000button")
           
        }
        else if score >= 4000 amp;amp; score <= 10000 {
            
            score  = 20
            
        }
        else if score >= 10000 amp;amp; score <= 25000 {
            score  = 50
        }
        else if score >= 25000 amp;amp; score <= 75000 {
            
            score  = 100
            
        }
        else if score >= 75000{
            
            score  = 250
            
        }
        else {
            
            score  = 1
            
        }
    }
    
    @IBAction func buttonimage(_ sender: Any) {
        
    }
    
    
    
    @IBOutlet weak var Counterlabel: UILabel!
}
  

итак, я недавно начал кодировать и многого не знаю, я хотел создать небольшую игру, и вот моя проблема:

сначала я хочу добавить чит-код в свою игру, чтобы у меня была текстовая метка, и я хочу, чтобы, если текст моих текстовых меток равен 1811 (или что-нибудь работает), тогда оценка = 50000

это проблема, с которой я столкнулся

также более важная вещь (если возможно), я действительно хочу знать, как сохранить данные gtame, чтобы при повторном воспроизведении прогресс сохранялся. единственный прогресс, который я хочу сохранить, — это число.

таблица лидеров также была бы хороша

любое из вышеперечисленных помогло бы, я действительно ценю это.

вот как выглядит моя раскадровка:

main.раскадровка

Комментарии:

1. Я не понимаю, в чем проблема с этикеткой.

Ответ №1:

вы можете использовать UserDefaults для сохранения результата:

 let defaults = UserDefaults.standard

defaults.set(25, forKey: "score")

defaults.set("ESRAA", forKey: "Name")
  

проверьте эту ссылку для получения более подробной информации:https://www.hackingwithswift.com/example-code/system/how-to-save-user-settings-using-userdefaults

Ответ №2:

 As per my understanding, 
  
  1. Токсичный вы можете добавить UITextField и установить его делегирование,

    Текстовое поле: следует изменить Charactersinrange:replacementString: TextField_Delegates_Detail

    Где вы можете установить проверку,

    if textfield.text == «1811» { оценка = 50000 }

  2. Для сохранения игровых данных вы можете использовать UserDefaults, CoreData, базу данных SQLite, которые поддерживает IOS. Some_Basic_Detail

Ответ №3:

Вы можете использовать что-то вроде проверки значения текстового поля

 if textField.text == "11811" { socre  = 5000 }
  

Ответ №4:

Для учета значения текстового поля подключите delegate текстового поля к контроллеру и реализуйте

 @objc func textFieldDidEndEditing(textField : UITextField) {
    if textField.text! != "1811" { return }
    score  = 50000
    UserDefaults.standard.set(score, forKey: "score")
}
  

Преимущество заключается в том, что проверка не выполняется постоянно при нажатии клавиши. Значение сохраняется в UserDefaults . Удалите IBAction

В viewDidLoad загрузите форму значения UserDefaults

 override func viewDidLoad() {
    super.viewDidLoad()
    score = UserDefaults.standard.integer(forKey: "score")
}
  

Проверка диапазона может быть написана более эффективно

 @IBAction func Button(_ sender: Any) {
    let imageName = "FB copy-3.png"
    let image = UIImage(named: imageName)
    let imageView = UIImageView(image: image!)
    imageView.frame = CGRect(x: 64.5, y: 413.5, width: 100, height: 100)
    view.addSubview(imageView)
    
    Counterlabel.text = String(score)
    switch score {
        case 500..<998:
            score  = 2
            imageView.image = UIImage(named:"500button")
        case 998..<1995:
            score  = 5
        case 1995..<4000:
            score  = 10
            imageView.image = UIImage(named:"2000button")
        case 4000..<10000:
            score  = 20
        case 10000...25000:
            score  = 100
        case 75000...:
            score  = 250
        default:
            score  = 1
    }
    UserDefaults.standard.set(score, forKey: "score")
}
  

Я сомневаюсь, что добавление (другого) вида изображения предназначено при каждом нажатии кнопки


И, пожалуйста, назовите переменные, такие как Button и Counterlabel в нижнем регистре: button и counterLabel

Комментарии:

1. привет, спасибо за ваш ответ с вашим кодом, я получаю две ошибки, одна из которых для функции obj, в которой говорится, что значение типа any не имеет текста элемента. второе — для улучшения всего моего кода, в нем говорится, что могут быть объявлены только методы экземпляра @ibaction

2. Первая ошибка: моя ошибка, это опечатка ( textField.text ). Вторая ошибка, которую я не понимаю.

3. кроме того, когда я использую код и запускаю игру, количество кликов не увеличивается

4. Что означает, что количество кликов не увеличивается ?

5. также мои данные не были сохранены (извините за беспокойство)