我在一个模式视图中使用按钮点击,这是我所能忍受的:
UIAlertView * alert =
[[UIAlertView alloc] initWithTitle: title
message: reason
delegate: self
cancelButtonTitle: @"New"
otherButtonTitles: @"View", nil];
[alert show];当在带有故事板的发送者的下面的"clickedButtonAtIndex“方法中单击”查看“按钮时,我调用了"self performSegueWithIdentifier:@"ModalSaleDetail1”iPhone :self;“
- (void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) buttonIndex
{
if ([alertView.title isEqualToString: @"Successful"]) {
switch (buttonIndex) {
case 0: // New transaction
{
if ([self.currentSale.lastStatus isEqualToString:@"approved"]) {
[self displayComposerSheet];
}
[self clearTransaction:nil];
break;
}
case 1: // View Transaction Details
{
NSLog(@"User wants to view transaction details.");
self.currentSale.cardNumber = self.currentSale.cardNumber.bulletRedacted;
self.cardNumberField.text = self.displayCardNumberView.text = self.currentSale.cardNumber;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { // device is iPad
self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:1];
UISplitViewController *splitVC = (UISplitViewController *)(self.tabBarController.selectedViewController);
UINavigationController *navC = [[splitVC viewControllers] lastObject];
APSaleDetailViewController *salesDVC = (APSaleDetailViewController *)navC.topViewController;
// If came here from new sale set to self.currentSale, otherwise do not
if (!salesDVC.currentSale) {
salesDVC.currentSale = self.currentSale;
}
salesDVC.apNewTVC = self;
if ([self.currentSale.lastStatus isEqualToString:@"approved"]) {
[self displayComposerSheet];
}
} else { // device is iPhone
if ([self.currentSale.lastStatus isEqualToString:@"approved"]) {
[self displayComposerSheet];
}
[self performSegueWithIdentifier:@"ModalSaleDetail1" sender:self];
}
break;
}
default:
{
NSAssert1(NO, @"Unknown alert button %d", buttonIndex);
}
}
} else if .....在我用MFMailComposeViewController实现我的电子邮件发送器之前,这个段工作得很好。
我使用以下代码来显示MFMailComposeViewController的模式视图:
// Displays an email composition interface. Populates all the Mail fields.
-(void)displayComposerSheet
{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"Receipt for credit card transaction"];
// Set up recipients
NSArray *toRecipients = [NSArray arrayWithObject:self.currentSale.emailAddress];
[picker setToRecipients:toRecipients];
UIGraphicsBeginImageContext(self.view.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * imageData = UIImageJPEGRepresentation(image, 1.0);
if ( [MFMailComposeViewController canSendMail] ) {
NSString *emailBody = @"Your credit card transaction summary and signature:";
[picker setMessageBody:emailBody isHTML:NO];
[picker addAttachmentData:imageData mimeType:@"image/jpeg" fileName:@"attachment"];
NSData *myData = UIImagePNGRepresentation(self.signatureImage);
[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"Autograph"];
[self presentModalViewController:picker animated:YES];
}
}现在,当self performSegueWithIdentifier:@"ModalSaleDetail1“sender:self在调用了self displayComposerSheet之后被调用时,不会发生分段。电子邮件编写器工作表显示正确,但在我发送或取消它之后,分段没有发生。如果我注释掉对self displayComposerSheet的调用,段就会正常发生(但当然没有电子邮件)。
顺便说一句,iPad代码可以很好地处理self displayComposerSheet调用,因为它不使用segues。
通常情况下,在呈现模式对话框后立即执行segue是否有效?
我正在为iOS 6.1构建Xcode4.6,并部署到iOS 5.1。我的iPhone运行5.1.1,我的iPad运行6.1。
发布于 2013-02-05 15:35:16
您知道,此接口在iOS 5中不可用
发布于 2014-03-22 22:14:57
我知道,这不能解决您的Segues问题,但如果您尝试返回到以前的View Controller,请尝试以下操作:
[self dismissViewControllerAnimated:YES completion:nil];https://stackoverflow.com/questions/14702011
复制相似问题