使用NSNotification将NSStringvariables传递给其他类

我想从一个类传递一个NSString到另一个类,并将NSString添加到我的第二个类中的一个NSMutableArray。 我相信我可以使用NSNotification这个,但我不知道如何通过一个variables通知。 我的代码是这样的:

//class1.h

#import <UIKit/UIKit.h> @interface ViewController : UIViewController @property(strong,nonatomic)NSString *variableString; @end 

//class1.m

 #import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize variableString = _variableString; - (void)viewDidLoad { [super viewDidLoad]; [self setVariableString:@"test"]; [[NSNotificationCenter defaultCenter] postNotificationName: @"pasteString" object: _variableString]; // Do any additional setup after loading the view, typically from a nib. } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. } @end 

//class2.h

 #import <UIKit/UIKit.h> @interface ViewController2 : UIViewController @property(strong,nonatomic)NSMutableArray *arr; @end 

//class2.m

 #import "ViewController2.h" @interface ViewController2 () @end @implementation ViewController2 @synthesize arr = _arr; - (void)viewDidLoad:(BOOL)animated { [super viewDidLoad]; if(_arr == nil) { _arr = [[NSMutableArray alloc]init]; } [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(incomingNotification:) name:@"pasteString" object:nil]; // Do any additional setup after loading the view. } - (void) incomingNotification:(NSNotification *)notification{ NSString *theString = [notification object]; [_arr addObject:theString]; } @end 

在发件人类中,您可以使用类似如下的方式发布通知:

 [[NSNotificationCenter defaultCenter] postNotificationName: NOTIFICATION_NAME object: myString]; 

监听器或接收器类必须注册通知:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(incomingNotification:) name:NOTIFICATION_NAME object:nil]; 

incomingNotification方法是:

 - (void) incomingNotification:(NSNotification *)notification{ NSString *theString = [notification object]; ... } 

编辑

当你从“ViewController”发布通知时,“ViewController2”是否被加载?

 Send your Notification like this: if(isComingFromHowToUseThisApp) { [[NSNotificationCenter defaultCenter] postNotificationName:@"noteFromVideoPlayer" object:@"fromHowToUseThisApp"]; }else { [[NSNotificationCenter defaultCenter] postNotificationName:@"noteFromVideoPlayer" object:@"fromVideoPlayerViewiPad"]; } Receive your notification like this: // Reset the default value of table view in master split view - (void)defaultCellSelectionOfTableView:(NSNotification *) objNotification { // We need to change the default selection of row NSString *noticeFromVideoPlayer = [objNotification object]; }// end defaultCellSelectionOfTableView