2014-02-10 5 views
0

Я пытаюсь заставить свое приложение перейти к следующему экрану. Я eneded до создания простого тестового приложения с 2-мя экранамиpushViewController ничего не делает, когда я его называю

На первом вю у меня есть кнопка, подключенный к следующему коду для вызова на следующий экран

- (IBAction)atest:(id)sender { 

    if (mHome == nil) 
     mHome = [[cHome alloc] initWithNibName:@"cHome" bundle:[NSBundle mainBundle]]; 

    [self.navigationController pushViewController:mHome animated:YES]; 
} 

я ставлю точку останова, чтобы убедиться, код exicutes, он делает, но ..... следующий экран не появляется.

полный код

#import <UIKit/UIKit.h> 

@interface cHome : UIViewController{ 

} 
- (IBAction)atest:(id)sender; 
@end 

@interface cHome() 

@end 

@implementation cHome 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
} 


- (IBAction)atest:(id)sender 
{ 
    [self.navigationController popToRootViewControllerAnimated:YES]; 

} 


- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
+0

Попробуйте использовать новый объект UINavigationController вместо self.navigationController в вызове функции кнопки – southpark

ответ

0

Как раз добавить на Unkn0wn и продемонстрировать, как я представил определенные виды в приложении.

  • Добавить раскадровки идентификатор для контроллера представления
    • нажмите на геймпаде просмотра в иерархии раскадровки
    • нажмите инспектор тождественное
    • добавить раскадровки идентификатор в виде строки в поле раскадровки ид

Я тогда сделал что-то вроде этого в моем коде:

[self presentViewController:[self.storyboard nstantiateViewControllerWithIdentifier:@"Paint"] animated:NO completion:nil]; 

Очевидно, что ваш идентификатор не будет «Paint», но это то, что я использовал. Это был мой упрощенный подход, надеюсь, что это поможет удачи!

ПРИМЕЧАНИЕ. Я не использовал навигационные контроллеры в своем приложении.

EDIT

хотел бы отметить, что этот метод отчасти делает контроллер появляется из ниоткуда, без анимации (я имел специальную анимацию для моего контроля, как переход между контроллерами зрения, поэтому я не нужно было анимировать сам контроллер)

0

Если вы хотите, чтобы нажать на контроллер представления, вы можете легко создать нажимной SEGUE, с первого контроллера представления вашего второго контроллера представления, а затем нажмите кнопку с помощью

[self performSegueWithIdentifier:@"yourSegueIdentifier" sender:self];

«push segues» может быть создан как по коду, так и в вашем файле раскадровки.

0

У Вас есть ошибка в вашем коде:

mHome = [[cHome alloc] initWithNibName:@"cHome" bundle:[NSBundle mainBundle]];

Я думаю, что это имя СИБ. Это должно быть mHome не cHome.

mHome = [[cHome alloc] initWithNibName:@"mHome" bundle:[NSBundle mainBundle]];

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

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