質問全体を編集しました
次の状況でModelViewControllerを表示することと、モーダルViewControllerを閉じることの違いは何ですか?
- HomeView
- TableItemSelectionビュー
- PickerView
HomeViewで、viewWillAppear
TableViewから設定されたNSUserDefaultから値をフェッチする
コードを記述しています。以下は、viewDidLoad(初期値用)とviewWillAppear(テーブルビューからの新しい値の場合)のコードです。
- (void)viewDidLoad
{
[super viewDidLoad];
actionMinutes = @"0";
actionSeconds = @"0";
restMinutes = @"0";
restSeconds = @"0";
}
- (void) viewWillAppear:(BOOL)animated
{
actionMin = [actionMinutes intValue];
actionSec = [actionSeconds intValue];
restMin = [restMinutes intValue];
restSec = [restSeconds intValue];
NSLog(@"acMin:%d acSec:%d reMin:%d reSec:%d",actionMin,actionSec,restMin,restSec);
}
TableItemSelectionビュー
で、HomeViewからこのビューを表示しています。次に、テーブルのdidSelectRowAtIndexメソッドに基づいてHomeViewでNSStringの値を設定します。値の設定に使用NSUserDefault
しています。そして、Done Button touchで、HomeViewを表示しています。(実際には、dismissModalViewControllerを実行する必要があります)しかし、dismissを使用すると、HomeViewのNSStringで値を取得できません。PickerViewからテーブルの値を取得しています。(私はそれをするように指示されています)。以下は、DONEボタンタッチでのテーブルビューのコードです
HomeView *homeView = [[HomeView alloc] init];
[homeView.view setBackgroundColor:[UIColor clearColor]];
[homeView.view setFrame:CGRectMake(0 ,40, 320, 460)];
homeView.actionMinutes = [[NSUserDefaults standardUserDefaults] valueForKey:@"actionMinute"];
homeView.actionSeconds = [[NSUserDefaults standardUserDefaults] valueForKey:@"actionSecond"];
homeView.restMinutes = [[NSUserDefaults standardUserDefaults] valueForKey:@"restMinute"];
homeView.restSeconds = [[NSUserDefaults standardUserDefaults] valueForKey:@"restSecond"];
homeView.song = [[NSUserDefaults standardUserDefaults] valueForKey:@"songstring"];
NSLog(@"%@",homeView.actionMinutes);
[self presentModalViewController:homeView animated:YES];
//[self dismissModalViewControllerAnimated:YES]; // if this method is used then no values are passed to HomeView
[homeView release];
PickerViewで、pickerviewから値を取得し、それ をUserDefaultに保存しています。以下はpickerviewの私のコードです
NSUserDefaults *actionTime = [NSUserDefaults standardUserDefaults];
[actionTime setValue:min forKey:@"actionMinute"];
[actionTime setValue:sec forKey:@"actionSecond"];
では、ModelViewを閉じたときにUserDefault値を取得できないのはなぜですか?毎回新しいビューを表示すると、ビューのスタックが作成されますか?