2014-11-18 2 views
0

Я создал приложение, которое генерирует случайное число, и пользователь должен ввести предположение и нажать кнопку, GUESS для отправки. Все работает нормально. Тем не менее, я просто пытаюсь запустить приложение с отключенным btnGuess и включенным при запуске новой игры. Кнопка также будет отключена, когда пользователь победит в игре. До сих пор я искал в Интернете и здесь о том, как вы отключили/разрешили UIButton, и каждый найденный мной ответ (в первую очередь: button.enabled = false) не работает. Пожалуйста, дайте мне знать, чего я здесь не хватает. Я также попробовал button.enabled = NO; (это было другое предлагаемое решение, которое не работает для меня). Благодарю.Отключить и включить UIButton - XCode Swift

import UIKit 

class myViewController: UIViewController { 

var guesses : UInt = 0 
var number : UInt32 = 0 
var inputGuess = 0 


@IBOutlet weak var lblGuesses: UILabel! 

@IBOutlet weak var lblGuessTitle: UILabel! 

@IBOutlet weak var lblOutput: UILabel! 

@IBOutlet weak var txtInput: UITextField! 

@IBAction func txtInput(sender: UITextField){ 

} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    txtInput.enabled = false 
    // btnGuess.enabled = false //doesnt work 



    // Do any additional setup after loading the view. 
} 

func generateRandom() -> UInt32{ 
    return arc4random_uniform(100) + 1 
} 

func incrementGuesses(){ 
    ++guesses 
    lblGuesses.text = String(guesses) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

@IBAction func btnGuess(sender: UIButton) { 

    let inputGuess = txtInput.text.toInt() 

    if UInt32(inputGuess!) > number{ 
     lblOutput.text = "Too High!" 
     incrementGuesses() 
    } 
    else if UInt32(inputGuess!) < number{ 
     lblOutput.text = "Too Low!" 
     incrementGuesses() 
    }else{ 
     lblOutput.text = "Correct Guess! You Win!" 
     guesses = 0 
     txtInput.text = "" 
     txtInput.enabled = false 
     //btnGuess.enabled = false //doesnt work 

    } 
} 


@IBAction func btnStart(sender: UIButton) { 

    number = generateRandom() 
    lblOutput.text = "I'm thinking of a number between 0 - 100" 
    lblGuesses.text = "0" 
    txtInput.enabled = true 
    //btnGuess.enabled = true //doesnt work 
} 

}

ответ

1

переменной вы ссылки (btnGuess) объявлена ​​как функция в коде здесь:

@IBAction func btnGuess(sender: UIButton) { 

Вы можете захотеть изменить имя функции действия для @IBAction func guess(sender: UIButton) и затем объявите объект @IBOutlet weak var btnGuess: UIButton!.

0

Это происходит потому, что btnGuess - это функция, а не переменная.

Изменить этот код:

@IBAction func btnGuess(sender:UIButton) 

To:

@IBAction func btnGuessClicked(Sender:UIButton) 

А также сделать @IBOutlet для btnGuess.

0

мое предложение будет создавать также:

@IBOutlet weak var btnGuess: UIButton! 

в контроллере представления также прилагается к той же кнопке, и в коде оных всякий раз, когда соответствующая строка:

btnGuess.enabled = false 

и что должно сделайте трюк для вас

0

У вас есть функция настройки кнопки (Действие), но нет способа ссылаться на фактический вид кнопки.

Вам нужно добавить больше IBOutlets в верхней части класса для ваших кнопок:

import UIKit 

class myViewController: UIViewController { 

    @IBOutlet weak var btnStart: UIButton! 
    @IBOutlet weak var btnGuess: UIButton! 

    @IBAction func btnStart(sender: UIButton) { 
    btnGuess.enabled = true 
    } 

} 
Смежные вопросы