2015-12-10 3 views
1

Я пытаюсь отключить кнопку продолжения, если в текстовом поле ничего нет. Вот мой код ...Как отключить кнопку, если текстовое поле пуст?

import UIKit 

class ViewController: UIViewController, UITextFieldDelegate { 

@IBOutlet weak var nounTextField: UITextField! 
@IBOutlet weak var `continue`: UIButton! 

var noun = String() 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

@IBAction func continueButton(sender: AnyObject) { 
    noun = nounTextField.text! 
} 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    let nvc = segue.destinationViewController as! ViewController2 
    nvc.noun2 = noun 
} 
} 
+1

Несвязанный, всегда вызывайте 'super' в' viewDidLoad'. – Rob

ответ

4

, так как вы уже сделали свой класс а UITextFieldDelegate объявление эта функция

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 

    let text = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string) 

    if !text.isEmpty{ 
     continueButton.userInteractionEnabled = true 
    } else { 
     continueButton.userInteractionEnabled = false 
    } 
    return true 
} 

также обновить viewDidLoad функция

override func viewDidLoad() { 
    super.viewDidLoad() 

    nounTextField.delegate = self 
    if nounTextField.text.isEmpty{ 
     continueButton.userInteractionEnabled = false 
    } 
} 
+0

Спасибо. Я продолжаю получать сообщение об ошибке, когда он продолжается.userInteractionEnabled. Он говорит, что последовательные утверждения на строке должны быть разделены символом a; – Johnd

+0

Что такое ошибка? – Steve

+0

В нем говорится, что последовательные утверждения на строке должны быть разделены символом a; – Johnd

-1
if nounTextField.text == ""{ 
    continueButton.enabled = false 
} 
0

Попробуйте это:

if nounTextField!.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()).isEmpty || 
        nounTextField.text == nil{ 
`continue`.enabled = false 
} 
+0

Где это должно быть? – Johnd

+0

Сначала установите делегат текстового поля в selfDideLoad, поскольку вы уже подклассифицируете UITextFieldDelegate, выполнив это: nounTextField.delegate = self, затем добавьте это nounTextField.addTarget (self, action: "textFieldDidChange:", forControlEvents: UIControlEvents .EditingChanged), который даст ему цель для перехода к изменению значения текстового поля, наконец, создайте функцию с указанным именем, в этом случае func textFieldDidChange (textField: UITextField) {// вставьте здесь код} –

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