UINavigationController сохранит - PullRequest
       24

UINavigationController сохранит

0 голосов
/ 07 марта 2012

Я написал простое приложение на основе UINavigationController с двумя ViewControllers;

В первом виде контроллера у меня есть этот код

-(IBAction)loadSecondView
{
    SecondView *secondView = [[SecondView alloc]init];
    [secondView setTotal:self.total];
    [self.navigationController pushViewController:secondView animated:YES];
    [secondView release];
    [self.navigationController popViewControllerAnimated:YES];
}

Во втором представлении у меня есть метка, которая создается программно.

.....

 [self.playerNameField addTarget:self 
                              action:@selector(textFieldFinished:) 
.....

- (IBAction)textFieldFinished:(id)sender
{
    [sender resignFirstResponder];
}

Проблема в том, что я получаю сбой приложения при нажатии кнопки «Готово» на клавиатуре.

[SecondView performSelector:withObject:]: message sent to deallocated instance 0x522af60

Я понимаю, в чем проблема, но не могу понять, почему это происходит.

Поправь меня, если я ошибаюсь.

SecondView *secondView = [[SecondView alloc]init]; // retain 1
[self.navigationController pushViewController:playersNames animated:YES]; //secondView have retain of 2
[secondView release]; // now secondView should have retain of 1

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Почему вы нажимаете, а затем активируете навигационный контроллер, после того, как вы нажимаете, должен переключиться вид, и должен появиться контроллер PlayersName с его видом.

Также мне не понятно, почему вы получаете экземпляр secondView, но никогда не используете его. Нажатие на navigationController должно сохранить контроллер, но кажется, что SecondView никогда не будет сохранен, и как только вы его используете, предыдущий контроллер выпустил его.

0 голосов
/ 07 марта 2012

Я не понимаю этого:

SecondView *secondView = [[SecondView alloc]init];
[self.navigationController pushViewController:playersNames animated:YES]; 
[secondView release];

Вы пытаетесь добавить secondView в навигатор? это было бы так:

 SecondView *secondView = [[SecondView alloc]init];
[self.navigationController pushViewController:secondView animated:YES]; 
[secondView release];
...