我有一个UIView
,其中UIButton
在1个类中创建:" viewClass
"。在我的mainVC
课程中,我致电viewClas
,当我选择mainVc
时,我需要在button
中调用方法,因此我创建了protocol
。 (我希望很清楚。)
以下是我设置protocol
和delegate
的方式:
viewClass.h
@protocol ViewClassDelegate
-(void)buttonWasClicked;
@end
...
@property (nonatomic, strong) id<ViewClassDelegate> delegate;
viewClass.m
[submitButton addTarget:self action:@selector(submitButtonTapped) forControlEvents: UIControlEventTouchUpInside];
- (void)submitButtonTapped {
[self.delegate buttonWasClicked];
}
mainVC.m
// Imported and called the delegate in mainVC.h. Then in .m I set the delegate
-(void)buttonWasClicked {
// Perform some action
}
有没有办法将NSString
传递给buttonWasClicked
?我的意思不是这样的:
- (void)buttonWasClicked:(NSString *)myString
因为myString
没有值,除非我在mainVC
方法中分配它。我想在submitButtonTapped
(myView.m
)中分配它。
基本上,我想要这样的东西:
- (void)textFieldDidBeginEditing:(UITextField *)textField
在那种方法中,当我使用该方法时,它知道textField
没有我定义它。
希望这很清楚。如果有人能够更好地解释它,请随时编辑它。如果您需要更多说明,请在评论中提问。
答案 0 :(得分:0)
我不确定这是不是你想要的:
@protocol ViewClassDelegate
-(void)buttonWasClicked:(NSString*)value;
@end
...
@property (nonatomic, weak) id<ViewClassDelegate> delegate;
[submitButton addTarget:self action:@selector(submitButtonTapped:) forControlEvents: UIControlEventTouchUpInside];
- (void)submitButtonTapped:(UIButton*)sender {
[self.delegate buttonWasClicked:stringToSendWhereverHasBeenDefined];
}
...
-(void)buttonWasClicked:(NSString*)value {
// Perform some action
}
答案 1 :(得分:0)
<强> viewClass.h 强>
gitbook
<强> viewClass.m 强>
@protocol ViewClassDelegate
-(void)buttonWasClicked:(NSString *)aString;
@end
<强> mainVC.m 强>
[submitButton addTarget:self action:@selector(submitButtonTapped) forControlEvents: UIControlEventTouchUpInside];
- (void)submitButtonTapped {
[self.delegate buttonWasClicked:@"this is a string"];
}