[英]Push / Pop View Controller With Navigation Bar from View Controller Without Navigation Bar
[英]Push and pop in Navigation controller?
我是iPhone應用程序的新手,在推和彈出視圖中導航控制器存在問題,例如,我分別具有三個視圖,即A,B和C,因為我要(推動)到A-> B -> C,然后回來(彈出)C-> B-> A。
情況1:現在我的要求如下A-> C,那么我需要從C-> B移走,那我該怎么做? 在這種情況下,我正在使用push(正在工作)。
情況2:但是,當我要去A-> B-> C並從C-> B回來時,我需要使用pop NOT Push。 因此,如何在case1和case2之間使用Push和pop操作。 現在,我以以下方式編寫。
// A-->C and C-->B or if [self.navigationController.viewControllers objectAtIndex:0]
我使用以下代碼:
CategoryClass *class=[[CategoryClass alloc]initWithNibName:@"CategoryClass" bundle:nil];
[self.navigationController pushViewController:class animated:YES];
// A-->B-->C(push) for back C-->B or if [self.navigationController.viewControllers objectAtIndex:1] i want to use this code
[self.navigationController popViewControllerAnimated:YES];
如何比較objectAtIndex:0
和objectAtIndex:1
NSMutableArray *views=[NSMutableArray arrayWithArray:self.navigationController.viewControllers];
[views removeObjectAtIndex:[views count]-2];
self.navigationController.viewControllers=views;
[self.navigationController popViewControllerAnimated:YES];
試試這個改變值,而不是2我認為這會幫助你
刪除堆棧值並移至所需的頁面。
謝謝.....
我們歡迎您,這不是您的新問題,我們在這里為yu提供適當的解決方案,因此,親愛的同伴,首先在appdelegate文件中進行一些更改:
storyboardName = [AppHelper isPhone] ? @"Main_iPhone" : @"Main_iPad";
storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
navController = (UINavigationController*)[storyboard instantiateInitialViewController];
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
MainMenu *controller = (MainMenu*)[mainStoryboard instantiateViewControllerWithIdentifier: @"MainMenuiphone"];
[navigationController pushViewController:controller animated:NO];
self.window.rootViewController = navigationController;
然后使用此代碼推送視圖:
ANYVIEWCONTROLLER *view = [self.storyboard instantiateViewControllerWithIdentifier:@"ANYVIEWZID"];
[ [self navigationController] pushViewController:view animated:YES];
看我的例子:(read comments =))
UINavigationController *navController;
UIViewController *viewControllerA, *viewControllerB, *viewControllerC;
[navController pushViewController:viewControllerA animated:YES]; // -> A
// some time passed
NSArray *currentViewControllers = [navController viewControllers]; // <- on stack now
NSMutableArray *newStack = [NSMutableArray arrayWithArray:currentViewControllers];
[newStack addObject:viewControllerB]; // <- adding B
[newStack addObject:viewControllerC]; // <- adding C
[navController setViewControllers:newStack animated:YES]; // <- setting new view controllers stack: A, B, C
// returning to B: pop viewControllerC
[navController popViewControllerAnimated:YES];
// or
[navController popToViewController:viewControllerB animated:YES];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.