Всегда ли нам нужно отклонять ModelViewController, который мы представили?
Я отредактировал весь вопрос
В чем разница между представлением контроллера ModelView и отклонением контроллера модального представления в следующей ситуации?
- HomeView
- TableItemSelection View
- 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);
}
В представлении TableItemSelection я представляю это представление из 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 я выбираю значения из pickerview, а затем сохраняю их в UserDefault. ниже мой код для выбора
NSUserDefaults *actionTime = [NSUserDefaults standardUserDefaults];
[actionTime setValue:min forKey:@"actionMinute"];
[actionTime setValue:sec forKey:@"actionSecond"];
Так почему же я не могу получить значения UserDefault при отклонении ModelView.??? Будет ли представление нового представления каждый раз создавать стек представлений???
3 ответа
@DShah: Да, определенно..!!
Вы должны отклонить каждый модальный вид.
Также, пожалуйста, опубликуйте код, который вы используете.
Также имейте в виду, что вам нужно сначала поместить строку NSUserDefaults (строка, которую вы используете, назначить значение NSString для NSUserDefaults), а затем поместить строку, где в вас dismissModalViewControllerAnimated:
,
Если вам нужна дополнительная помощь, пожалуйста, оставьте мне комментарий.
Надеюсь, это поможет вам.
Я думаю, что вы пытаетесь сохранить целочисленное значение в NSUserDefaults
тогда ты должен
Используйте setInteger: forKey: вместо setObject:forKey:
, Целое число - это не объект, это примитивный тип.
Чтобы получить его, используйте integerForKey:.
Это окончательный ответ, с помощью которого я могу решить свою проблему
Вот код события касания кнопки "Готово"...
- (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
}