1

我有一个 MainController 和 detailcontroller。当我弹出书籍选择并选择一本书时,detailcontroller 会显示一个带有书籍文章的 UIWebView:

@interface IpadBooksViewController : UITableViewController {
    SearchResult                *searchResult;
    IpadArticleViewController   *detailController;
    IpadMainViewController      *mainController;
    UIPopoverController         *popover;
}

在 UIWebView 中,我显示了一个电子邮件图标并捕获了该方案:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

    NSURL *url          = [request URL];
    NSString *scheme    = [url scheme];
    NSString *host      = [url host];

    if ([[url description] hasSuffix:@"next"]) {
        NSLog(@"next Show");
    }

    BOOL isShareLinks       = [host isEqualToString:@"displayShareLinks"];
    BOOL isFavoriteLinks    = [host isEqualToString:@"displayFavoriteLinks"];

    if ([@"myappurl" isEqualToString:scheme] && (isShareLinks || isFavoriteLinks)) {        

        self.selectedArticleNumber  = [url.path lastPathComponent];

        if (isShareLinks) {                     
            [self sendMailArticleNumber:selectedArticleNumber];

        } else if (isFavoriteLinks) {
            NSLog(@"ipad favorite clicked");
            [self toggleFavorite:selectedArticleNumber];

            Broker *broker = [[Broker alloc] init];
            [broker loadProjects:self];
            [broker release];            
        }
    }

    return [super webView:webView shouldStartLoadWithRequest:request navigationType:navigationType];

}

操作应该在我的 UIWebView 下显示 MFMailController,但没有显示任何错误消息:

- (void) sendMailArticleNumber:(NSString *)articleNumber {
    MFMailComposeViewController* composer = [[MFMailComposeViewController alloc] init];
    composer.mailComposeDelegate = self;
    [composer setSubject:@"Article"];

    NSString *messageBody = [Article fetchBody:articleNumber bookId:bookId];

    [composer setMessageBody:messageBody isHTML:YES];   
    [self presentModalViewController:composer animated:YES];

    [composer release];     
}

欢迎任何帮助。我确实尝试创建一个弹出窗口,addView atIndex 没有成功......如果您需要更多代码,请告诉我。

大卫

4

1 回答 1

0

我确实通过将控制器加载到委托中解决了这个问题,如下所示:

    [((PublilexAppDelegate*)[[UIApplication sharedApplication] delegate]) sendMailArticleNumber:selectedArticleNumber bookId:self.bookId];

然后进入 Delegate :

- (void) sendMailArticleNumber:(NSString *)articleNumber bookId:(NSString*)bookId {
    MFMailComposeViewController* composer = [[MFMailComposeViewController alloc] init];
    composer.mailComposeDelegate = self;
    [composer setSubject:@"Article"];

    NSString *messageBody = [Article fetchBody:articleNumber bookId:bookId];

    [composer setMessageBody:messageBody isHTML:YES];
    [self->navigationController presentModalViewController:composer animated:YES];

    [composer release];
}

并驳回并回到以前的观点:

-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {

    [self->navigationController dismissModalViewControllerAnimated:YES];

    //    [self dismissViewControllerAnimated:YES completion:nil];

    //    [((PublilexAppDelegate*)[[UIApplication sharedApplication] delegate]) navigateToIpadMain];

}
于 2013-01-28T16:00:12.083 回答