Нам всегда нужно отклонятьModelViewController, который мы представили? - PullRequest
2 голосов
/ 01 сентября 2011

Я отредактировал весь вопрос

В чем разница между представлением контроллера ModelView и отклонением контроллера модального вида в следующей ситуации ??

  1. HomeView
  2. TableItemSelection View
  3. PickerView

В HomeView Я пишу код в viewWillAppear для извлечения значений из NSUserDefault, установленного из TableView,Ниже приведен мой код для 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);
}

In TableItemSelection View Я представляю это представление из HomeView.Теперь я хочу установить значение NSString в HomeView на основе метода didSelectRowAtIndex таблицы.Я использую 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 Я получаю значения из окна выбора и сохраняю их в UserDefault.ниже приведен мой код для pickerview

NSUserDefaults *actionTime = [NSUserDefaults standardUserDefaults];
[actionTime setValue:min forKey:@"actionMinute"];
[actionTime setValue:sec forKey:@"actionSecond"];

Так почему же я не могу получить значения UserDefault при отклонении ModelView. ???Создает ли каждый раз новое представление стек представлений ???

Ответы [ 3 ]

1 голос
/ 02 сентября 2011

@ DShah: Да, определенно .. !!

Вы должны отклонить все модальные представления.

Также опубликуйте код, который вы используете.

Также имейте в виду, что сначала вам нужно поместить строку NSUserDefaults (строка, которой вы назначаете значение NSString для NSUserDefaults), а затем поместить строку в вас dismissModalViewControllerAnimated:.

Если вам нужна дополнительная помощь, пожалуйста, оставьте мне комментарий.

Надеюсь, это поможет вам.

0 голосов
/ 09 сентября 2011

Это окончательный ответ, с помощью которого я могу решить свою проблему

Вот код события «Готово» касания кнопки ...

- (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 голосов
/ 02 сентября 2011

Я думаю, что вы пытаетесь сохранить целочисленное значение в NSUserDefaults, тогда вам нужно

Использовать setInteger: forKey: вместо setObject:forKey:.Целое число не является объектом, это тип примитива.

Чтобы получить его, используйте integerForKey: .

...