0

我在这里浏览了不同的类似问题,但找不到任何对我的问题有用的东西。我正在努力解决的问题很简单,但我无法弄清楚。

我正在使用 Xcode 4.6.2 和 Storyboard。这是故事板: 在此处输入图像描述

这是我想要的工作流程:

  • 点击 tableVC 中的单元格应该会推动 Edit document 视图并提供 Back 和 Done 按钮。
  • 点击相机图片应该“加载”(推送/模态?)我的 cameraVC,它是 UIImagePickerController 的子类。我在选择器顶部添加了一个自定义叠加层,并使用自定义按钮拍照。在此事件中,我当前执行导致 previewDocumentView(模态显示)的 segue,当点击“使用”按钮时,我会显示编辑文档视图。

问题是即使我尝试设置属性,编辑文档视图也没有导航栏self.navigationBarHidden = NO;这对我来说似乎很正常,因为我已经以模态方式呈现了视图,但是那该怎么做呢?

我尝试从 tableVC 推送我的 cameraVC,但我收到一条错误消息,指出禁止堆叠 2 个导航控制器(因为 UINavigationController 的 UIImagePickerController 子类的 cameraVC 子类)。似乎我唯一的选择是以模态方式呈现 cameraVC 但我不知道如何使用导航栏呈现编辑文档 VC。

编辑:在 cameraVC 中有一个导航栏不是最佳的,但如果这是唯一的方法是可以接受的。

4

1 回答 1

1

似乎最好的解决方案是使用 unwind segue!

总之:

1)在tableVC中创建一个方法如

- (IBAction)unwindToThisViewController:(UIStoryboardSegue *)unwindSegue
{
    NSLog(@"Rolled back");
}

2)为您的previewDocumentVC 创建一个展开segue,并为其提供一个唯一ID,例如“unwindFromPreview”,将其连接到unwindToThisViewControllerIBAction。查看我过去给出的这个答案,了解如何实现这一点的详细步骤(步骤 2 和 3)。

3)prepareForSegue在您设置一些 tableVC BOOL 属性的 previewDocumentVC 中创建一个方法,例如

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"unwindFromPreview"]) {
        ((TableVC*)segue.destinationViewController).shouldTransitionToEditDocVC = YES;
    }
}

4)然后在tableVC的ViewWillAppear方法中检查shouldTransitionToEditDocVC,如果它设置为YES,则执行对editDocVC的segue。

我希望这有帮助!

于 2013-05-13T09:07:52.510 回答