簡體   English   中英

在導航控制器中按下並彈出?

[英]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:0objectAtIndex: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM