2015-06-15 102 views
-2

我有一个UIView,其中UIButton创建于1个类中:“viewClass”。在我的mainVC课程中,我调用了viewClas,当我选择button时,我需要调用mainVc中的方法,因此我创建了。 (我希望是明确的。)从另一个类别指定变量

下面是我如何设置和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 
} 

有没有办法通过一个NSStringbuttonWasClicked?我的意思不是这样的:

- (void)buttonWasClicked:(NSString *)myString 

因为myString没有价值,除非我给它分配在mainVC方法。我想分配它在submitButtonTapped(这是在myView.m)。

基本上,我想是这样的:

- (void)textFieldDidBeginEditing:(UITextField *)textField 

在该方法中,它知道textField就是没有我定义它,当我使用该方法。

希望这是显而易见的。如果有人能更好地解释它,请随时编辑它。如果您需要更多解释,请在评论中提问。

+0

您想从哪里传递'NSString'到哪里? –

+0

从'myView'到'mainVC'? –

+0

是的。通过'buttonWasClicked'方法从'myView'到'mainVC' – Jessica

回答

0

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 
} 
+0

哇!简直不敢相信!谢谢!!有没有一个名字? – Jessica

+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 
} 
+0

取代按钮,我想传递一个已定义的字符串 – Jessica

+0

我编辑了答案。请让我知道如果我错过任何细节 – agy