我在自定义ProfileView
班UIViewController
中包含了一个XIB Alarm
。 ProfileView
有一个子视图UITextView
,我想从我的自定义类UITextView
而不是Alarm
调用ProfileView
委托方法,因为我对文本的所有逻辑都是如此我UITextView
班的Alarm
。所以我的问题是:如果UITextView
是Alarm
的子视图,我可以从我的UITextView
课程中调用ProfileView
委托方法吗?换句话说,我可以将UITextView
代理设置为Alarm
而不是self
吗?
答案 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
对象,如下所示:
然后选择委托。