2013-05-14 3 views
0

Я пытаюсь pushViewController в iOS.But результате выполнения является следующимviewController и pushViewcontroller не работают?

My Fist view

Second View

Когда я нажал на кнопку будет сделать переход от просмотра для просмотра B. Вот мой код для просмотра

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

@interface ViewControllerA : UIViewController 

-(IBAction)next:(id)sender; 

@end 

в .m файл

#import "ViewControllerA.h" 
@interface ViewControllerA() 
@end 

@implementation ViewControllerA 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
} 
-(IBAction)next:(id)sender 
{ 
    ViewControllerB *viewController=[[ViewControllerB alloc]init]; 
    [email protected]"tunvir"; 
    [self.navigationController pushViewController:viewController animated:YES]; 
} 
@end 

в ViewController B

@interface ViewControllerB : UIViewController 

@property (nonatomic,strong)NSString *string; 

@end 

В .m файл

#import "ViewControllerB.h" 

@interface ViewControllerB() 

@end 

@implementation ViewControllerB 

@synthesize string=_string; 

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

В хотите установить строку в viewB на "tunvir" и загрузить объект как viewB. но много предупреждения appears.Why это происходит и как это исправить? Спасибо

+1

Какие предупреждения? – Jeepston

+0

Вложенная анимация push может привести к поврежденной навигационной панели 2013-05-14 14: 55: 36.881 TestBarDelegate [1687: 11303] Завершение перехода навигации в неожиданном состоянии. Дерево навигации в навигационной панели может быть повреждено. 2013-05-14 14: 55: 36.883 TestBarDelegate [1687: 11303] Неуравновешенные вызовы для перехода на начало/конец для . –

+0

У вас есть xib-файл для ViewControllerB ??? –

ответ

1

, если вам нужно только установить заголовок для Панели навигации по

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    self.navigationItem.title = @"Title for NavigationBar"; 
} 

EDIT Используйте ViewControllerB»это, если ур использованием раскадровки

-(IBAction)next:(id)sender 
{ 
UIStoryboard *storyboard = [[UIStoryboard storyboardWithName:@"MainStoryboard" 
           bundle:NULL] 
UIViewController *viewControllerb = [storyboard instantiateViewControllerWithIdentifier:@"ViewControllerB"]; 
[[self navigationController] pushViewController:viewControllerb animated:YES]; 
} 
+0

вызывает исключение и разбивает программу. –

+0

проверить с кодом обновления, отредактировал мой ответ. – Bonnie

+0

Если вы используете раскадровку, то почему бы не использовать segue вместо того, чтобы реализовать pushViewController: самостоятельно ... –

0

заменить ViewControllerB *viewController=[[ViewControllerB alloc]init]; с

ViewControllerB *viewController=[[ViewControllerB alloc] initWithNibName:@"ViewControllerB" bundle:nil]; 
+0

вызывая исключение и разбивая программу. –

+0

Возможно, это связано с тем, что компилятор не может найти файл nib для '@" ViewControllerB "' –

0

попытка ниже код ...

-(IBAction)next:(id)sender 
    { 
     ViewControllerB *viewController=[[ViewControllerB alloc]initWithNibName:@"ViewControllerB" bundle:nil]; 
     [email protected]"tunvir"; 
     [self.navigationController pushViewController:viewController animated:YES]; 
    } 
+0

, вызывая исключение и разбивая программу. –

+0

У вас есть xib ViewControllerB? и почему вы используете viewController.string = @ "tunvir"; эта линия? – BhushanVU

0

Yo uare не инициализацией правильно .use

ViewControllerB *viewController=[[ViewControllerB alloc] initWithNibName:@"ViewControllerBXIbFileNAme" bundle:nil]; 

вместо

ViewControllerB *viewController=[[ViewControllerB alloc]init]; 
3

Если вы используете раскадровки сделать так ..

-(IBAction)next:(id)sender 
{ 

ViewControllerB *viewController=[self.storyboard instantiateViewControllerWithIdentifier:@"viewControllerB"]; 
[email protected]"tunvir"; 
[self.navigationController pushViewController:viewController animated:YES]; 
} 

Dont забыли дать StoryboardId для просмотраControllerB как viewControllerB

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