2010-02-16 2 views
1

Почему это не переключит представления для меня? При нажатии кнопки ничего не происходит ...Переключение просмотров в iPhone SDK?

-(IBAction)howtoplayButtonClicked{ 
    howToPlayViewController = [[HowToPlayViewController alloc] initWithNibName:@"HowToPlayViewController" bundle:nil]; 
    [self.navigationController pushViewController:howToPlayViewController animated:YES]; 
    [HowToPlayViewController release]; 

} 

в .h файле у меня есть это ...

#import <UIKit/UIKit.h> 
#import "HowToPlayViewController.h" 

@interface PopToItViewController : UIViewController { 

    HowToPlayViewController *howToPlayViewController; 

} 

-(IBAction)howtoplayButtonClicked; 

@end 
+0

Вы подключили свою кнопку к методу действий howtoplayButtonClicked? –

+0

Да, это связано – NextRev

+0

Вы подтвердили с помощью NSLog? –

ответ

4

Ваш метод действия ...

-(IBAction)howtoplayButtonClicked; 

... должен выглядеть следующим образом:

-(IBAction)howtoplayButtonClicked:(id) sender; 

В это неправильная форма не может быть названо. Если исправление формы не работает, вы должны:

  1. Поместите в методе точку останова или запись в журнале, чтобы узнать, вызвана ли она. Если он не проверяет IBConnections, чтобы убедиться, что кнопка подключена к методу.
  2. Вам не нужно howToPlayViewController установить как свойство, если вы инициализируете его с помощью наконечника, а затем освобождаете его. Как правило, вы будете использовать только свойство, если вы хотите подключить его в Interface Builder, в этом случае он должен быть определен следующим образом:

    IBOutlet HowToPlayViewController *howToPlayViewController;

0

Убедитесь self.navigationController! = Ноль

+0

как я могу убедиться в этом? – NextRev

+0

например assert (self.navigationController! = Nil) – 2010-02-16 20:49:20

2

Для начинающих , это неправильно:

[HowToPlayViewController release]; 

Оно должно быть:

[howToPlayViewController release]; 

Я не знаю, что отправляет сообщение о выпуске в класс.

+0

переключил его какPlayViewController и он все еще ничего не делает – NextRev

+0

Hah! Хороший улов! Я отскакивал прямо мимо этого. – TechZen

0

Установите initWithNibName:nil" и пусть контроллер представления сделает все остальное.

+0

если вы хотите флип-анимацию, вы можете добавить \t yourViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; просто измените UIModalTransitionStyle для любой другой анимации. – Souljacker

Смежные вопросы