如何在 XIB 中调用 UITextField 的委托方法?
How do I call delegate methods for a UITextField within a XIB?
我有一个 XIB ProfileView
包含在自定义 UIViewController
class Alarm
中。 ProfileView
有一个子视图 UITextView
,我想从我的自定义 class Alarm
而不是 ProfileView
调用 UITextView
委托方法,因为我所有的关于 UITextView
文本的逻辑在我的 Alarm
class 中。所以我的问题是:如果 UITextView
是 ProfileView
的子视图,我可以从我的 Alarm
class 调用 UITextView
委托方法吗?换句话说,我可以将 UITextView
委托设置为 Alarm
而不是 self
吗?
连接并使 UITextView
作为 ProfileView
的 public 属性
@interface ProfileView : UIView
@property (weak, nonatomic) IBOutlet UITextView *textView;
@end
在您的 Alarm
class 中,设置 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;
是的,你可以。
通过 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
对象,如下所示:
然后select 委托.
我有一个 XIB ProfileView
包含在自定义 UIViewController
class Alarm
中。 ProfileView
有一个子视图 UITextView
,我想从我的自定义 class Alarm
而不是 ProfileView
调用 UITextView
委托方法,因为我所有的关于 UITextView
文本的逻辑在我的 Alarm
class 中。所以我的问题是:如果 UITextView
是 ProfileView
的子视图,我可以从我的 Alarm
class 调用 UITextView
委托方法吗?换句话说,我可以将 UITextView
委托设置为 Alarm
而不是 self
吗?
连接并使
的 public 属性UITextView
作为ProfileView
@interface ProfileView : UIView @property (weak, nonatomic) IBOutlet UITextView *textView; @end
在您的
Alarm
class 中,设置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;
是的,你可以。
通过 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
对象,如下所示:
然后select 委托.