从另一个类中分配变量

时间:2015-06-15 08:02:13

标签: ios objective-c methods protocols

我有一个UIView,其中UIButton在1个类中创建:" viewClass"。在我的mainVC课程中,我致电viewClas,当我选择mainVc时,我需要在button中调用方法,因此我创建了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方法中分配它。我想在submitButtonTappedmyView.m)中分配它。

基本上,我想要这样的东西:

- (void)textFieldDidBeginEditing:(UITextField *)textField

在那种方法中,当我使用该方法时,它知道textField没有我定义它。

希望这很清楚。如果有人能够更好地解释它,请随时编辑它。如果您需要更多说明,请在评论中提问。

2 个答案:

答案 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"];
}