我编辑了整个问题
在以下情况下呈现ModelView控制器和解除模态视图控制器之间的区别是什么?
在 HomeView 中
我在viewWillAppear
中编写代码以从TableView中设置NSUserDefault中获取值。下面是我的viewDidLoad(初始值)和viewWillAppear(来自tableview的新值)的代码
- (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呈现此视图。现在我想根据Table的didSelectRowAtIndex方法在HomeView中设置NSString的值。我正在使用NSUserDefault
来设置值。
通过Done Button touch我正在呈现HomeView。 (实际上我必须解雇ModalViewController)但是当我使用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值。???每次呈现一个新视图会产生一堆视图???
答案 0 :(得分:1)
@DShah:是的,绝对是.. !!
您需要关闭每个模态视图。
另请发布您正在使用的代码。
另请注意,您需要先放置NSUserDefaults行(您使用的行将NSString值指定给NSUserDefaults),然后将行放在dismissModalViewControllerAnimated:
中。
如果您需要更多帮助,请给我留言。
希望这会对你有所帮助。
答案 1 :(得分:0)
我认为你试图在NSUserDefaults
中存储整数值,然后你必须
使用setInteger:forKey:代替setObject:forKey:
。整数不是对象,它是基本类型。
要检索它,请使用integerForKey:。
答案 2 :(得分:0)
这是我能够解决问题的最终答案
以下是完成按钮触摸事件的代码...
- (IBAction) btnDonePressed:(id)sender {
aurioTouchAppDelegate *appDelegate = (aurioTouchAppDelegate *) [[UIApplication sharedApplication] delegate];
appDelegate.homeView.actionMinutes = [[NSUserDefaults standardUserDefaults] valueForKey:@"actionMinute"];
appDelegate.homeView.actionSeconds = [[NSUserDefaults standardUserDefaults] valueForKey:@"actionSecond"];
appDelegate.homeView.restMinutes = [[NSUserDefaults standardUserDefaults] valueForKey:@"restMinute"];
appDelegate.homeView.restSeconds = [[NSUserDefaults standardUserDefaults] valueForKey:@"restSecond"];
// [self presentModalViewController:homeView animated:YES];
[self dismissModalViewControllerAnimated:YES]; // if this method is used then no values are passed to HomeView
}