如何将另一个 UIViewController 添加到现有的 UINavigationController

How to add another UIViewController to an existing UINavigationController

我有一个带有两个视图控制器的应用程序。第一个嵌入在导航控制器中并有一个导航栏,在第一个视图控制器中的某个方法结束后,我以编程方式呈现第二个视图控制器。这工作正常,但这样第二个视图控制器不是导航控制器堆栈的一部分,并且与第一个视图控制器没有任何关系。像这样,我无法利用导航控制器。关于如何解决这个问题的任何想法?

在用户从照片库中选取图像后,我将此代码呈现给第二个视图控制器:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  pickedImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
  [self dismissViewControllerAnimated:YES completion:NULL];
  UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
  ViewController *viewController = (ViewController *)[storyboard instantiateViewControllerWithIdentifier:@"viewControllerID"];
  viewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
  [self presentViewController:viewController animated:YES completion:nil];
}

试试这个:

YourController *controller = [[YourController alloc] init];

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

而不是

[self presentViewController:viewController animated:YES completion:nil];

使用

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

这样VC2也在同一个导航栈中

您的最终代码如下所示:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    ViewController *viewController = (ViewController *)[storyboard instantiateViewControllerWithIdentifier:@"viewControllerID"];    
    viewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self.navigationController pushViewController:viewController animated:YES];
}