在 UIModalTransitionStylePartialCurl 视图控制器上呈现全屏视图的 iOS 实现方法

3
开发iPhone应用时,我有一个主视图控制器,使用UIModalTransitionStylePartialCurl的转场方式呈现第二个“分享”视图控制器。从用户界面的角度来看,这似乎是有意义的,因为它只会在底部占用一小部分空间,显示几个分享按钮,同时保持用户在主视图上。此时,如果我有一个按钮启动第三个视图(在这种情况下是MFMailComposeViewController),邮件视图将在前一个视图的翻页下方呈现,使其无法使用。

我希望第三个邮件视图能够突破并完全呈现自己,这不可能吗?

如果我在这里违反了Apple的UI标准或其他什么,请随意指出。

1个回答

0
尝试在从翻转视图控制器取消vc后,从presentingViewController呈现邮件vc。 这种方法看起来像这样:
在FirstVC中(触发卷曲转换的那个):

FirstVC.h

- (void)presentMail;

FirstVC.m

- (void)presentMail {
    // the code to present the mail UI, moved here from the SecondVC under the curl
}

SecondVC.m

- (IBAction)userPressedTheMailButton:(id)sender {

    [self dismissViewControllerAnimated:YES completion:^{
        [self.presentingViewController presentMail];
    }];
}

不幸的是,这给了我一个警告:Warning: Attempt to present <MFMailComposeViewController: 0xa26d390> on <ViewController: 0x95856e0> whose view is not in the window hierarchy!但我要说,在这种情况下我没有使用navigationController,这是我的问题吗?这里的命名很奇怪,“to present”(命令)和“the preSent”有点令人困惑。我猜“presentingViewController”是指呈现“self”的内容,“presentViewController”是呈现的命令? - trevorgrayson
嗯。很抱歉它没起作用。虽然这是一个奇怪的错误,但你说得对,presentingViewController指的是呈现当前视图控制器的视图控制器(在SDK中,present是一个动词,意思是使用户可见)。为什么呈现VC的视图不在层次结构中呢?你能把邮件代码暂时移到第一个VC中,看看是否能在那里工作吗? - danh
希望它能够实现。我的回答背后的想法是让第一个VC进行邮件演示。presentingViewController只是一个快捷方式。如果它在第一个vc上起作用,那么你只需要找到一种方法来从卷曲下面的vc传达这一点。当它接收到按钮按下事件时,关闭自身并警报顶部的vc。 - danh
另外一个要点 - 我认为你试图实现的UI通常使用UIActionSheet来完成。 - danh
一些有趣的观点。我能用UIActionSheet实现这个吗?我想我可以用活动视图控制器实现它,但这不是我想要的美学效果。我不确定我是否可以将此放在呈现控制器上而不关闭当前控制器——这可能并不是坏事。我会再试一下。 - trevorgrayson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接