Objective c iOS:关闭模式并在主NavigationController上推送新的viewcontroller

Objective c iOS:关闭模式并在主NavigationController上推送新的viewcontroller,objective-c,uinavigationcontroller,Objective C,Uinavigationcontroller,这是我的问题(见下图): 我有一个主屏幕(MainViewController),从中我展示了嵌入在导航控制器中的表单模式(ModalController) 完成表单后,我想将结果呈现给用户,并取消模式 结果用ItemViewController显示,应将其推到主堆栈上,即在导航控制器中,如果用户按下返回键,则返回主屏幕 我的问题是如何取消模式并同时推送新的视图控制器 我尝试的是: 取消模式,并使用在完成块中推送新的视图控制器 self.parentViewController.naviga

这是我的问题(见下图):

我有一个主屏幕(
MainViewController
),从中我展示了嵌入在导航控制器中的表单模式(
ModalController

完成表单后,我想将结果呈现给用户,并取消模式

结果用
ItemViewController
显示,应将其推到主堆栈上,即在导航控制器中,如果用户按下返回键,则返回主屏幕

我的问题是如何取消模式并同时推送新的视图控制器

我尝试的是:

  • 取消模式,并使用在完成块中推送新的视图控制器
    self.parentViewController.navigationController pushViewController:itemViewController
    但只有模式被解除

  • 以相同的方式按下视图控制器,然后关闭,也不会产生任何效果

  • 将模态展开到主屏幕,然后从
    unwindSegue
    方法中,实例化并推送新的视图控制器。不幸的是,下面的代码具有相同的效果


可能很重要 在故事板中,ItemViewController嵌入在NavigationController中,因为它的定义如下图所示:

也许这有助于:

在ItemViewController的viewDidLoad方法中:

UIImage *backButtonImage = [UIImage imageNamed:@"back.png"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];

[backButton setImage:backButtonImage
            forState:UIControlStateNormal];

backButton.frame = CGRectMake(0, 0, 55, 45);

[backButton addTarget:self
               action:@selector(goHome)
     forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backBarButtonItem;

- (void)goHome{


NSArray *array = [self.navigationController viewControllers];

[self.navigationController popToViewController:[array objectAtIndex:0] animated:YES];


}

嗯,是的,显然问题是模态被忽略了。我试图从模式中呈现新的ViewController,但没有忽略它,它正确地显示出来。所以现在我只需要“黑客”我的方式回到主屏幕。我不知道popToViewController,现在就试试吧!
UIImage *backButtonImage = [UIImage imageNamed:@"back.png"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];

[backButton setImage:backButtonImage
            forState:UIControlStateNormal];

backButton.frame = CGRectMake(0, 0, 55, 45);

[backButton addTarget:self
               action:@selector(goHome)
     forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backBarButtonItem;

- (void)goHome{


NSArray *array = [self.navigationController viewControllers];

[self.navigationController popToViewController:[array objectAtIndex:0] animated:YES];


}