2016-03-27 5 views
0

私の目標は、デリゲートを使ってUISwitchでUITextFieldの編集を有効/無効にすることです。ドラッグ - デリゲートクラスのIBOutletにUISwitchを接続する

import Foundation 
import UIKit 

class SwitchedTextFieldDelegate : NSObject, UITextFieldDelegate{ 

    @IBOutlet weak var switchText : UISwitch! 

    func textFieldShouldBeginEditing(textField: UITextField) -> Bool { 

    //Here I intended to read the UISwitch state 

    print("Can't touch this") 

    return false 
    } 

} 

私はIBOutletをストーリーボードにドラッグしようとしましたが、これはできません。私はそれをUIViewControllerを継承するメインビューコントローラ上で行うことができます。 Swiftでは複数の継承が不可能であることをすでに知っています。これをどうやって解決しますか?代わりにIBActionを使用してみます。

+1

ビューコントローラ自体をデリゲートとして使用するのが一般的です。必要に応じて別のクラスをデリゲートとして使用できますが、ストーリーボードを使用してデリゲートに接続することはできません。あなたはコードでそれを行う必要があります。 – ryantxr

答えて

1

メインビューコントローラーで、UITextFieldとUISwitchのIBOutletをドラッグします。次に、UITextField Delegateを確認します。私は私のViewController画面shot.Here FirstViewControllerを共有しているより良く理解するために

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

     return true 

    }else{ 

     return false 
    } 
    } 

は自分MainViewControllerのようなものです:次のようにUITextFieldのデリゲートメソッドを実装します。これがあなたを助けることを願っています。

enter image description here

関連する問題