NSNoficationCenterを使用して、あるViewConrollerから別の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)
}
現在、このコードには 2 つの問題があります。
1) 通知は、ViewController B の viewDidLoad が 1 回呼び出された後にのみ送信されます。最初は機能しません。
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
誰でも問題が何であるかを指摘できますか?
2 つのコントローラー間で配列の値を渡す簡単な方法はありますか