Возврат к первому представлению из второго представления с неизмененными значениями первого представления

У меня есть первое представление, которое является экраном входа в систему. После того, как пользователь войдет в систему, есть кнопка для перехода к моему второму представлению. Моя проблема заключается в том, что когда я нажимаю кнопку, которая возвращает к первому представлению, он вызывает метод viewDidLoad и запускает представление, как будто я только что создал приложение. У меня есть другие метки, которые устанавливаются в соответствии с вошедшим в систему пользователем, поэтому я хочу, чтобы мое состояние первого представления было сохранено до того, как оно было отправлено.

Это метод, который я использую для перехода ко второму виду:

-(IBAction) secondView
{
    _secondView = [[SecondViewController alloc]initWithNibName:nil bundle:nil];
    [self presentModalViewController:_secondView animated:YES];
    [_secondView release];
}

и метод возврата к первому просмотру:

-(IBAction) back {
    _firstView = [[FirstViewController alloc]initWithNibName:nil bundle:nil];
    [self presentModalViewController:_firstView animated:YES];
    [_firstView release];
}

Я не использую навигационный контроллер, поэтому есть ли способ вернуться к моему первому представлению так, как это было, когда я перешел ко второму виду? Заранее спасибо.


person Joe    schedule 13.06.2011    source источник


Ответы (4)


Чтобы вернуться к firstViewController, вместо того, чтобы помещать его в стек (который тогда будет _firstView _secondView _firstView), извлеките второйViewController с помощью

-(IBAction) back {
    [self dismissModalViewControllerAnimated:YES];
}

Проблема с тем, что вы делаете, заключается в том, что вы создаете новый firstViewController, когда вы «возвращаетесь» с помощью вашего текущего метода (подсказки к этому — alloc и init). На самом деле, вы просто хотите вытолкнуть второй ViewController из верхней части первого ViewController, что вы можете сделать с помощью метода, описанного выше.

person PengOne    schedule 13.06.2011

Вам нужно отклонить второй UIVIewController вместо того, чтобы представлять первый как еще одно модальное представление.

Вы должны заменить метод back чем-то вроде этого:

-(IBAction)back:{
    [[self parentViewController] dismissModalViewControllerAnimated:YES];
}

Это вернет вас к первому виду, как это было, и (вероятно) освободит второй UIViewController.

Надеюсь, это полезно.

person jgriego    schedule 13.06.2011

Если вам нужно вернуться к FirstViewController, используйте этот код в обратном методе

[self dismissModalViewControllerAnimated:YES];
person Naveen    schedule 13.06.2011

Когда вы вернетесь, закройте свой SecondViewController вместо того, чтобы создавать экземпляр FirstViewController и представлять его.

person pradeepa    schedule 13.06.2011