[Self.navigationController pushViewController: ngView аніміраваныя: ДА]; не працуе

Калі я выкарыстоўваю

 NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
[self presentViewController:ngView animated:NO completion:nil];

вышэй кода кантролер пераходзіць на NGViewController старонку.

But Калі я выкарыстоўваюthis navigation controller

NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
[self.navigationController pushViewController:ngView animated:YES];

Кантролер будзе той жа старонцы.

Ці можа адно сказаць, што у чым праблема.

4
значыць вы зрабілі прыкладанне UINavigation На аснове, калі не затым пераўтварыць яго ў аснове навігацыі прыкладання, то ён будзе працаваць
дададзена аўтар Dipen Panchasara, крыніца
Вы карыстаецеся UINavigationController ? Калі няма, то self.navigationController будзе нуль .
дададзена аўтар borrrden, крыніца
да я не выкарыстаў UINavigationController таму яго не прыходзіць .... дзякуй 2 усе
дададзена аўтар Nithinbemitk, крыніца
пераканайцеся, што вы штурхаючы View Controller у навігацыі стэка. у адваротным выпадку self.navigationController верне нуль;
дададзена аўтар msmq, крыніца

7 адказы

Вы павінны заявіць пра гэта ў першым кантролеры

NGViewController *ngView = [[NGViewController alloc]init];
[self.navigationController pushViewController:ngView animated:YES];
2
дададзена

Вы павінны выкарыстоўваць гэты код

NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
[self presentViewController:ngView animated:NO completion:nil];

пасля напісання гэтага радка, калі то вы хочаце перайсці на іншую старонку з націскам гледжання кантролера

UINavigationController *navigationController = [[UINavigationController       alloc]initWithRootViewController:ngView];

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

Я спадзяюся, што вы будзеце вырашаць гэтую праблему за кошт гэтага кода Поспехаў

2
дададзена

Ваш self.navigationController , верагодна нуль - праверыць яго з дапамогай адладкі. Ваш самастойна Погляд кантролер не ў UINavigationController .

1
дададзена

Цяпер я выкарыстоўваю гэты код

 NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
 [UIView beginAnimations:nil context:NULL];
 [UIView setAnimationDuration: 0.50];
 [self presentViewController:ngView animated:NO completion:nil];

так што Віль даць такі ж эфект іншага

1
дададзена
Я спадзяюся, што вы сканчаеце анімацыю пазней ... (P.S. Гэты спосаб анімацыі сапраўды стары [папярэдне iOS 4])
дададзена аўтар borrrden, крыніца

Само кантролер павінна мець навігацыйны кантролер (у раскадроўкі) для навігацыі.

[self.navigationController pushViewController:nextController animated:YES];
1
дададзена

UINavigationController is a controller of controllers and it is designed to allow you to push and pop controllers and manage a hierarchy of your view's. And your navigationController property tells you whether your NGViewController is currently in a UINavigationController's hierarchy; if not (as in this case), the navigationController property returns nil.

0
дададзена

Вы павінны стварыць свой уласны навігацыйны кантролер, а затым паспрабаваць рассунуць кантралёры праглядаць і, такім чынам, стварыць іерархію прадстаўлення. Звычайна я хацеў бы прапанаваць наступнае:

 UINavigationController *navigationController = [[UINavigationController       alloc]initWithRootViewController:firstviewController];
[self.window setRootViewController:navigationController];
navigationController.delegate = self;
navigationController.navigationBarHidden = YES;
0
дададзена