2

我已经编辑了整个问题

在以下情况下呈现 ModelView 控制器和关闭模态视图控制器有什么区别?

  1. 主页查看
  2. 表项选择视图
  3. 选择器视图

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用来设置值。通过完成按钮触摸,我正在展示 HomeView。(实际上我必须dismissModalViewController)但是当我使用dismiss时,我无法在HomeView的NSString中获取值。我从 PickerView 获取表的值。(我被指示这样做)。下面是我在完成按钮触摸时的表格视图代码

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 值。???每次呈现一个新视图都会产生一堆视图???

4

3 回答 3

1

@DShah:是的,绝对是..!!

您需要关闭每个模态视图。

另外请发布您正在使用的代码。

还要记住,您需要先放置 NSUserDefaults 行(您使用的行将 NSString 值分配给 NSUserDefaults),然后将行放在 where 中dismissModalViewControllerAnimated:

如果您需要更多帮助,请给我留言。

希望这对您有所帮助。

于 2011-09-02T04:13:10.977 回答
0

我认为您正在尝试存储整数值,NSUserDefaults那么您必须

使用setInteger:forKey:而不是setObject:forKey:. 整数不是对象,它是原始类型。

要检索它,请使用integerForKey:

于 2011-09-02T05:44:26.290 回答
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
}
于 2011-09-09T08:41:16.490 回答