如何在XIB中为UITextField调用委托方法?

时间:2018-05-16 00:59:34

标签: ios objective-c xib uitextviewdelegate

我在自定义ProfileViewUIViewController中包含了一个XIB AlarmProfileView有一个子视图UITextView,我想从我的自定义类UITextView而不是Alarm调用ProfileView委托方法,因为我对文本的所有逻辑都是如此我UITextView班的Alarm。所以我的问题是:如果UITextViewAlarm的子视图,我可以从我的UITextView课程中调用ProfileView委托方法吗?换句话说,我可以将UITextView代理设置为Alarm而不是self吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

  • 连接并ProfileView作为@interface ProfileView : UIView @property (weak, nonatomic) IBOutlet UITextView *textView; @end

    的公共财产
    Alarm
  • self.profileView.textView.delegate = self课程中,设置profileView并实施您需要的功能,或Alarm不是@interface Alert : UIViewController <UITextViewDelegate> @property (nonatomic, strong) ProfileView* profileView; @end // In |viewDidLoad| or anywhere after you initialize |_profileView| self.profileView.textView.delegate = self; 的属性,请在您之后设置委托初始化它。

    {{1}}

答案 1 :(得分:1)

是的,你可以。

使用Alarm中的代码:

func viewDidLoad() {
    super.viewDidLoad()

    // If you have the UITextField @IBOutlet in your Alarm
    textField.delegate = self

    // If it's owned by ProfileView
    profileView.textField.delegate = self
}

确保Alarm符合UITextFieldDelegate

或者使用Interface Builder,首先从UITextField拖动到Alarm对象,如下所示:

然后选择委托

enter image description here