2015-05-08 20 views
2

我有一个enum我在作为UITextFieldDelegate不能在UITextFieldDelegate类初始化使用文本字段在斯威夫特

枚举类使用:

enum Position { 
//Enum for Position variable in MemeTextDelegate 

case Top, Bottom 
init() { //set outside of enum to .Bottom if needed 
    self = .Top 
} 

UITextFieldDelegate类:

class MemeTextDelegate: NSObject, UITextFieldDelegate { 

    var position = Position() 
    var userEnteredText = false //Default value 

    override init() { 
     switch (position) { 
     case (.Top): 
      textField.text = "TOP" 
     default: 
      textField.text = "BOTTOM" 
     } 
    } 

    //Methods removed for this example... 
} 

ViewController中,我设置了每个TextField的代理人,因此它知道它是'Top'或'Bottom'

@IBOutlet weak var topTextField: UITextField! 
@IBOutlet weak var bottomTextField: UITextField! 

let topTextFieldDelegate = MemeTextDelegate() 
let bottomTextFieldDelegate = MemeTextDelegate() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    //Set Delegates 
    self.topTextField.delegate = self.topTextFieldDelegate 
    self.bottomTextField.delegate = self.bottomTextFieldDelegate 

    //Set individual fields delegate properties for TOP and BOTTOM 
    self.topTextFieldDelegate.position = .Top 
    self.bottomTextFieldDelegate.position = .Bottom 
} 

MemeTextDelegatetextField.text每一行得到一个编译器错误,上面写着:“未解决的标识符‘文本框’的使用”,同时使用方法中textField是一点问题都没有。

我相信我错过了一些基本的东西,所以任何输入都有帮助。

回答

1

从您提供的代码中,MemeTextDelegate不拥有textField的实例。据推测,它只会来自代表方法。然而,你在init方法中引用它。