我正在使用NSNoficationCenter将数组的值从一个ViewConroller 传递到另一个。
ViewControllerB是ViewController A的子视图
在ViewController A中,我有一个将数组作为参数的方法,一旦该方法接收到数组,我将使用以下代码来存储数组的值
-(void)gettingValueOfArray:(NSArray*)newArray{
NSDictionary *storeArray = [NSDictionary dictionaryWithObjectsAndKeys:newArray,@"newArray", nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"loadArray" object:self userInfo:storeArray];
}
在ViewController B我使用以下内容在viewDidLoad 中接收通知
-(void)viewDidLoad{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadArray:) name:@"loadArray" object:nil];
}
然后用这个方法保存数组的值
-(void)saveArray:(NSNotification *)notfication{
NSArray *saveValueOfArray = [notification userinfo]objectForKey:@"newArray"];
NSLog(@"The Value of the Notification Array is : %u", saveValueOfArray.count)
}
现在我对这段代码有两个问题。
1)仅在ViewController B中的viewDidLoad被调用一次后才发送通知,第一次不起作用。
2)一旦开始工作,每次调用发送的通知都会增加1
这是第 4 次调用通知时的控制台输出,它一直在调用它所调用的所有内容。
The Value of the Array is : 10
The Value of the Array is : 10
The Value of the Array is : 10
The Value of the Array is : 10
谁能指出问题可能是什么?
有没有更简单的方法在两个控制器之间传递数组的值