Нажатие UIButton помещает новый вид в стек навигации - PullRequest
1 голос
/ 09 декабря 2010

В настоящее время у меня есть окно с прикрепленным представлением, которое имеет три кнопки UIB. Когда пользователь нажимает кнопку, я бы хотел, чтобы представление изменилось на новое, используя NavigationController.

Итак, прямо сейчас у меня есть кнопка "about", закодированная так:

UIButton *aboutButton = [UIButton buttonWithType:UIButtonTypeCustom];
aboutButton.frame = CGRectMake(236, 240, 60, 60);
[aboutButton setImage:[UIImage imageNamed:@"About.png"] 
    forState:UIControlStateNormal];
[aboutButton addTarget:self action:@selector (aboutButtonPressed) 
    forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:aboutButton];

А для функции действия:

-(void)aboutButtonPressed {
    UINavigationController *aboutView =[[UINavigationControlleralloc] initWithNibName:@"About" bundle:nil];
    [self.navigationController pushViewController:aboutView animated:YES];
    [self.view addSubview:aboutView.view];
    [aboutView release];
}

В файле About.xib в данный момент ничего нет.

Теперь к проблеме ... Когда нажата кнопка, вверху появляется верхняя панель навигации, но не в том анимированном смысле, как у меня она закодирована. Это просто всплывает. Также нет кнопки возврата, чтобы вернуться к виду с кнопками на них. Что я делаю неправильно? Я могу предоставить больше кода или деталей, если это не достаточно ясно.

Редактировать: вот картинка, чтобы лучше понять, что происходит.

После нажатия кнопки about:

http://dl.dropbox.com/u/1481176/Screen%20shot%202010-12-09%20at%2011.28.40%20AM.png

Редактировать 2: Удален какой-то вонкий код для кнопки возврата, которого там быть не должно.

1 Ответ

1 голос
/ 09 декабря 2010

Большая часть кода после pushViewController выглядит хитроумно.

-(void)aboutButtonPressed {
    AboutViewController *aboutView =[[AboutViewController **alloc**] initWithNibName:@"About" bundle:nil];
    [self.navigationController pushViewController:aboutView animated:YES];
    [aboutView release];
}

Это должно как минимум вытолкнуть ваше пустое представление в стек и автоматически дать вам кнопку возврата.

...