我使用模态卷曲页面效果从tableview加载了一个菜单。因此,一旦用户点击某个按钮,就会显示此效果。当用户点击“联系我们”按钮时,将显示一个电子邮件撰写,但由于它是模态卷曲效果,因此隐藏了发送和取消按钮。
我很清楚,如果任何尺寸改变,苹果将拒绝该应用程序已经完成,所以我正在寻找一个替代方案:关闭当前模态效果,并推送一个新的MFMailComposeView。
我该怎么办?
编辑:代码如此
- (IBAction)sendEmail:(id)sender {
// Email Subject
// NSString *emailTitle = @"Test Email";
// Email Content
// NSString *messageBody = @"iOS programming is so fun!";
// To address
NSArray *toRecipents = [NSArray arrayWithObject:@"eli@gmail.com"];
MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[mc setSubject:@"Email"];
[mc setMessageBody:message.text isHTML:NO];
[mc setToRecipients:toRecipents];
// self.view.superview.bounds = CGRectMake(0, 0, self.view.bounds.size.width, 200);
// Present mail view controller on screen
[self presentViewController:mc animated:YES completion:NULL];
//[self dismissViewControllerAnimated:YES completion:nil];
}
答案 0 :(得分:0)
我想通了,它有点少但它值得。
首先,在应该调用发送电子邮件的动作的ViewController中,放置一个NSNotification,如下所示:
[self dismissViewControllerAnimated:YES completion:^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"email" object:nil];
}];
稍后,当该视图消失时,原始视图控制器将显示,因为它是通过模态视图控制器调用的,在那一个放置:
-(void)createEmail{
MFMailComposeViewController * mc = [[MFMailComposeViewController alloc] init];
NSArray *toRecipents = [NSArray arrayWithObject:@"elias@gmail.com"];
mc.mailComposeDelegate = self;
[mc setSubject:_emailSubject];
[mc setMessageBody:_emailMessage isHTML:NO];
[mc setToRecipients:toRecipents];
[self presentViewController:mc animated:YES completion:nil];
}
并且,在viewDidload中,添加以下行:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(createEmail)
name:@"email" object:nil];
这样,我们告诉原始视图控制器,在她的加载阶段,收听称为电子邮件的通知,当我们在电子邮件视图控制器中调用它时,应用程序将知道触发的通知已被触发,并将搜索她的以下操作,这是MFMailComposeViewController的委托。
这样,对于任何未来的开发人员,您将完成指定的目标