以模态方式呈现uiviewcontroller但使用uinavigationcontroller堆栈

时间:2014-02-05 02:26:23

标签: objective-c uiviewcontroller

我有3个视图控制器A,B和C.我从A模态地呈现B.然后在B中我想解除(或用storyboard放松)来查看控制器C.

我有A和C属于同一个UINavigationController堆栈,A可以推送到C.

然后我希望能够让B解雇C,但是回到A,而不是B.我怎样才能使用故事板segues实现这个目标?

放松Segue:

我尝试通过在C中编写以下方法来创建展开segue,然后将UIBarButton操作拖动到情节提要编辑器中的绿色退出图标并选择它。没有记录任何内容。

- (IBAction)unwindToViewMessage:(UIStoryboardSegue *)unwindSegue
{
    NSLog(@"unwound");
}

1 个答案:

答案 0 :(得分:0)

展开segues只允许转换到情节提要中的现有场景实例。 当您尝试从B展开到C时,堆栈中不存在viewController实例。

这就是为什么,没有任何记录从你的 - (IBAction)unwindToViewMessage:(UIStoryboardSegue *)unwindSegue 方法

另一种选择是:

  • 将您的viewController C嵌入另一个navigationController
  • 添加名为barButtonItem的自定义Back
  • viewController A中编写另一个展开方法 (IBAction)unwindToVioewControllerA:(UIStoryboardSegue *)unwindSegue
  • 将自定义Back按钮的操作设置为上述展开方法。

现在你的原始解开了,即

- (IBAction)unwindToViewMessage:(UIStoryboardSegue *)unwindSegue
{
    NSLog(@"unwound");
}

会正确地展开到viewController C,您可以使用viewController BackbarButton转到{{1}}。

storyBoard 看起来像这样: enter image description here

希望这有帮助!