我们总是需要关闭我们提供的ModelViewViewController吗?

问题描述:

我编辑了整个问题我们总是需要关闭我们提供的ModelViewViewController吗?

是什么呈现模型视图控制器,解聘在下列情况下模态视图控制器之间的区别?

  1. HomeView
  2. TableItemSelection查看
  3. PickerView

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这一观点。现在我想根据表的didSelectRowAtIndex方法在HomeView中设置NSString的值。我正在使用NSUserDefault来设置值。 并与完成按钮触摸我介绍HomeView。 (其实我不得不dismissModalViewController)但是,当我使用dismiss我无法获得NSString的HomeView中的值。我从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"]; 

那么到底为什么驳回模型视图当我不能够得到UserDefault值的代码。???是否每次呈现新视图都会形成一堆视图?

+0

你如何存储阵列中NSUserDefault?你能提供代码吗? – Maulik

+0

你的数组是否包含自定义对象? – Maulik

+0

抱歉,但更正..而不是NSArray其NSString ... – DShah

@DShah:是的最肯定.. !!

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

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

另外请记住,您需要先将NSUserDefaults行(您使用的行分配NSString值给NSUserDefaults),然后将行放在您的位置dismissModalViewControllerAnimated:

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

希望这可以帮助你。

+0

我添加了所有我正在使用的代码。但是,当我使用dismissModalViewController我无法获得设置为HomeView的NSUserDefault值 – DShah

+0

@DShah:我认为这个问题是别的。可能是代码执行的顺序,模态视图与NSUserDefaults无关。如果我没有弄错,你可以参考“Hive”中的一个情况。向你的先生询问一下。可能会帮助你 –

+0

@DShah:得到了答案? –

我想你想存储NSUserDefaults整数值,那么你必须

使用setInteger:forKey:而不是setObject:forKey:。整数不是一个对象,它是一个基本类型。

检索它使用integerForKey:

+0

你也可以使用NSNumber(就像java中的Wrapper类)... – Maulik

+0

我已经证实,在两边我我正在使用NSString,我正在使用'setValue:forKey:' – DShah

这是最终的答案,通过它,我能够解决我的问题

这里是完成按钮的触摸事件代码...

- (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 
} 
+0

请修改您的问题,而不是将更多信息添加为“答案”。 –

+0

这是我能够解决我的问题的最终答案 – DShah

+2

在这种情况下,您可以请_explain_您做了什么,而不是仅仅转储大量代码?它会让你的回答更有用。 –