2015-09-04 76 views
1

我試圖使用自定義的UITextField,更準確地說AKMaskField(here is AKMaskField project on GitHubUIAlertController使用自定義的UITextField

但我沒有運氣,這裏是我的代碼,一個簡單的UIAlertController:

@IBAction func buttonClick(sender: AnyObject) { 

    var alert = UIAlertController(title: "Vincular CPF", message: "Digite seu CPF para acumular mais pontos no seu programa de fidelidade (Somente números)", preferredStyle: UIAlertControllerStyle.Alert) 

    alert.addTextFieldWithConfigurationHandler(textFieldConfig) //Line with error 
    alert.addAction(UIAlertAction(title: "Cancelar", style: UIAlertActionStyle.Cancel, handler: handleCancelButton)) 
    alert.addAction(UIAlertAction(title: "Enviar", style: UIAlertActionStyle.Default, handler: { 
      (UIAlertAction) in 
      println("ok") 
     })) 



    self.presentViewController(alert, animated: true, completion: { 


    }) 

} 

func textFieldConfig(textField: AKMaskField){ 
    textField.mask = "{ddd}.{ddd}.{ddd}-{dd}" 
    textField.maskTemplate = "x" 
    textField.maskShowTemplate = true 

    //textField.keyboardType = .NumberPad 
    //textField.placeholder = "00000000000" 
} 

這裏是錯誤消息:

Cannot invoke 'addTextFieldWithConfigurationHandler' with an argument list of type '((AKMaskField) ->())' 

的錯誤是很清楚,我想盡一切辦法強制向下轉換到一個的UITextField,但似乎沒有任何工作。

任何人有任何想法我怎麼能做到這一點?

回答

0

嘗試使另一個功能:

let config = {(textField: UITextField) in textFieldConfig((textField as? AKMaskField)!)} 
alert.addTextFieldWithConfigurationHandler(config) //Line with error 
+0

我不得不改變爲'(textField:UITextField!)'來編譯,當我點擊按鈕時我得到這個錯誤信息:無法將類型'_UIAlertControllerTextField'(0x109a40b88)的值轉換爲'Test ___ iOS_Application.AKMaskField'(0x106ce6e60 )。 –

+0

那麼'AKMaskField'不會擴展'UIAlertControllerTextField'?你能修改它嗎? –

+0

我試圖擴展它,但我得到一個錯誤:使用未聲明的類型'UIAlertControllerTextField' –

0

這不會編譯,因爲UIAlertController被實例化UITextField。沒有公共接口,我可以找到允許您替換的自定義類,如AKMaskField - 但是您可以在配置處理程序中設置委託並從此處對其進行自定義。

+1

我該怎麼做?我對swift很陌生 –