从另一个 class 分配一个变量
Assigning a variable from another class
我有一个 UIView
,在 1 class 中创建了一个 UIButton
:“viewClass
”。在我的 mainVC
class 中,我调用了 viewClas
并且当 button
被选中时我需要在 mainVc
中调用一个方法,所以我创建了一个 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
是什么,而无需我在使用该方法时定义它。
希望这是清楚的。如果有人可以更好地解释它,请随时对其进行编辑。如果您需要更多说明,请在评论中提问。
我不确定这是不是你想要的:
@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
}
viewClass.h
@protocol ViewClassDelegate
-(void)buttonWasClicked:(NSString *)aString;
@end
viewClass.m
[submitButton addTarget:self action:@selector(submitButtonTapped) forControlEvents: UIControlEventTouchUpInside];
- (void)submitButtonTapped {
[self.delegate buttonWasClicked:@"this is a string"];
}
mainVC.m
// Imported and called the delegate in mainVC.h. Then in .m I set the delegate
-(void)buttonWasClicked:(NSString *)aString {
// aString = this is a string
}
我有一个 UIView
,在 1 class 中创建了一个 UIButton
:“viewClass
”。在我的 mainVC
class 中,我调用了 viewClas
并且当 button
被选中时我需要在 mainVc
中调用一个方法,所以我创建了一个 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
是什么,而无需我在使用该方法时定义它。
希望这是清楚的。如果有人可以更好地解释它,请随时对其进行编辑。如果您需要更多说明,请在评论中提问。
我不确定这是不是你想要的:
@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
}
viewClass.h
@protocol ViewClassDelegate
-(void)buttonWasClicked:(NSString *)aString;
@end
viewClass.m
[submitButton addTarget:self action:@selector(submitButtonTapped) forControlEvents: UIControlEventTouchUpInside];
- (void)submitButtonTapped {
[self.delegate buttonWasClicked:@"this is a string"];
}
mainVC.m
// Imported and called the delegate in mainVC.h. Then in .m I set the delegate
-(void)buttonWasClicked:(NSString *)aString {
// aString = this is a string
}