1

私はMainControllerとdetailedcontrollerを持っています。本の選択をポップオーバーして本を選択すると、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];

そしてデリゲートに:

- (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 に答える