2

我編輯了整個問題我們總是需要關閉我們提供的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

回答

1

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

您需要關閉每個模態視圖。

另請發佈您正在使用的代碼。

另外請記住,您需要先將NSUserDefaults行(您使用的行分配NSString值給NSUserDefaults),然後將行放在您的位置dismissModalViewControllerAnimated:

如果您需要更多幫助,請給我留言。

希望這可以幫助你。

+0

我添加了所有我正在使用的代碼。但是,當我使用dismissModalViewController我無法獲得設置爲HomeView的NSUserDefault值 – DShah

+0

@DShah:我認爲這個問題是別的。可能是代碼執行的順序,模態視圖與NSUserDefaults無關。如果我沒有弄錯,你可以參考「Hive」中的一個情況。向你的先生詢問一下。可能會幫助你 –

+0

@DShah:得到了答案? –

1

我想你想存儲NSUserDefaults整數值,那麼你必須

使用setInteger:forKey:而不是setObject:forKey:。整數不是一個對象,它是一個基本類型。

檢索它使用integerForKey:

+0

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

+0

我已經證實,在兩邊我我正在使用NSString,我正在使用'setValue:forKey:' – DShah

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

請修改您的問題,而不是將更多信息添加爲「答案」。 –

+0

這是我能夠解決我的問題的最終答案 – DShah

+2

在這種情況下,您可以請_explain_您做了什麼,而不是僅僅轉儲大量代碼?它會讓你的回答更有用。 –

相關問題