iOS-有关显示和推送控制器的一些问题

iOS-有关显示和推送控制器的一些问题,ios,pushviewcontroller,presentviewcontroller,Ios,Pushviewcontroller,Presentviewcontroller,这里有三个控制器,AViewController,BViewController,CViewController, 第一步:AViewController呈现给BViewController BViewController *BVC = [[BViewController alloc]init]; [self presentViewController:BVC animated:YES completion:nil]; CViewController *CVC = [[CViewControl

这里有三个控制器,
AViewController
BViewController
CViewController
, 第一步:
AViewController
呈现给
BViewController

BViewController *BVC = [[BViewController alloc]init];
[self presentViewController:BVC animated:YES completion:nil];
CViewController *CVC = [[CViewController alloc]init];
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:CVC];
[self.navigationController pushViewController:nav animated:YES];
第二步:
BViewController
推送到
CViewController

BViewController *BVC = [[BViewController alloc]init];
[self presentViewController:BVC animated:YES completion:nil];
CViewController *CVC = [[CViewController alloc]init];
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:CVC];
[self.navigationController pushViewController:nav animated:YES];
现在,如果我想从
CViewController
返回到
AViewController
,我应该写什么代码?

只需使用以下代码:

self.dismissViewControllerAnimated(true, completion: nil)
关闭C ViewController,因为C ViewController现在位于导航堆栈上。A提供包含ViewB控制器的导航控制器。B视图控制器推送C视图控制器,因此C仍在导航控制器中

您可以在此处查看我的项目:

只需使用以下代码:

self.dismissViewControllerAnimated(true, completion: nil)
关闭C ViewController,因为C ViewController现在位于导航堆栈上。A提供包含ViewB控制器的导航控制器。B视图控制器推送C视图控制器,因此C仍在导航控制器中

您可以在此处查看我的项目:


您应该像这样展示
BViewController

BViewController *BVC = [[BViewController alloc]init];
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:BVC];
//Setting For Transparent
nav.providesPresentationContextTransitionStyle = YES;
nav.definesPresentationContext = YES;
nav.modalPresentationStyle = UIModalPresentationOverCurrentContext;

[self presentViewController:nav animated:YES completion:nil];
并在BViewController中实现:

- (void)viewWillDisappear:(BOOL)animated {

     [self.navigationController setNavigationBarHidden:YES];


}

- (void)viewWillDisappear:(BOOL)animated{
    [self.navigationController setNavigationBarHidden:NO];
}
然后,您可以推送到
CViewController

CViewController *CVC = [[CViewController alloc]init];
[self.navigationController pushViewController:CVC animated:YES];
当你想回到A时,用C简单地调用它:

[self dismissViewControllerAnimated:YES completion:nil];

您应该像这样展示
BViewController

BViewController *BVC = [[BViewController alloc]init];
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:BVC];
//Setting For Transparent
nav.providesPresentationContextTransitionStyle = YES;
nav.definesPresentationContext = YES;
nav.modalPresentationStyle = UIModalPresentationOverCurrentContext;

[self presentViewController:nav animated:YES completion:nil];
并在BViewController中实现:

- (void)viewWillDisappear:(BOOL)animated {

     [self.navigationController setNavigationBarHidden:YES];


}

- (void)viewWillDisappear:(BOOL)animated{
    [self.navigationController setNavigationBarHidden:NO];
}
然后,您可以推送到
CViewController

CViewController *CVC = [[CViewController alloc]init];
[self.navigationController pushViewController:CVC animated:YES];
当你想回到A时,用C简单地调用它:

[self dismissViewControllerAnimated:YES completion:nil];


如果我想一步完成这些,我该怎么做?等我一分钟,我会为你创建一个新的项目,很简单,你可以将它转换为objective-c,你运行我的项目了吗?我刚刚添加了一个gif文件,让你很容易看到结果我已经运行了你的项目,很好,这个问题我已经解决了,但现在,我有了新的问题。现在,我需要展示没有AViewController导航栏的BViewController,我需要推CViewController,它有导航表单BViewController。如果我想一步完成这些,我该怎么做?等一下,我会为你创建一个新的项目,很简单,你可以将其转换为objective-c,你运行我的项目了吗?我刚刚为你添加了一个gif文件,很容易看到结果。我运行了你的项目,很好,这个问题我已经解决了,但是现在,我有了新的问题。现在,我需要展示没有AViewController导航条的BViewController,我需要推CViewController,它有BViewController导航表单。如果有DViewController,EViewController,FViewController,它仍然工作吗?你可以看看我的项目,让你很容易理解。现在,我需要展示没有AViewController导航条的BViewController,我需要推CViewController,它有BViewController导航表单。你的方式不起作用,我在哪里可以找到你的项目?看看我的回答:|如果有DViewController,EViewController,FVIEWontroller,现在,我需要展示没有AViewController导航栏的BViewController,我需要推CViewController,它有导航表单BViewController。你的方式不起作用我在哪里可以找到你的项目?看我的答案:|