从另一个 class 分配一个变量

Assigning a variable from another class

我有一个 UIView,在 1 class 中创建了一个 UIButton:“viewClass”。在我的 mainVC class 中,我调用了 viewClas 并且当 button 被选中时我需要在 mainVc 中调用一个方法,所以我创建了一个 protocol. (我希望这很清楚。)

以下是我设置 protocoldelegate 的方法:

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 
}