2015-05-08 49 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方法中引用它。