0

このコードでは、ユーザーが ImageViewController で写真 (現在提供されている) を取得して表示し、キャプションを追加します。写真とキャプションは MTViewcontroller に渡され、そこで PDF に変換されます。PDF部分は解決しましたが、セグエに苦労しています。ガイダンスに感謝します。このような例はなかなか見つかりません。

ImageViewController.h

#import <UIKit/UIKit.h>
@interface ImageViewController : UIViewController
{
    NSURL *url;
    UIImage *imageRoll;
}
@property (strong, nonatomic) IBOutlet UIWebView *webView;
@property (strong, nonatomic) IBOutlet UITextField *enterCaption;
- (IBAction)Button:(id)sender;
@end

ImageViewController.m imageRoll を正しく扱っているかどうか確信が持てず、これに適したセグエ形式が見つかりません。ユーザーがキャプションを送信すると、セグエとなるキャプションが PDF コントローラーに送信されます。しかし、セグエが与えられた場合、キーボードは解放されますか?

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Since iPhone simulator doesn't have photos, load and display a placeholder image
    NSString *fPath = [[NSBundle mainBundle] pathForResource:@"IMG_3997" ofType:@"jpg"];
    url = [NSURL fileURLWithPath:fPath];
    [webView loadRequest:[NSURLRequest requestWithURL:url]];
    UIImage *imageRoll = [UIImage imageWithContentsOfFile:fPath];
}

// User provides a caption for the image
- (IBAction)Button:(id)sender {
    NSString *caption = enterCaption.text;
    [self performSegueWithIdentifier:@"showPDF" sender:sender];
    MTViewController *vc1 = [segue destinationViewController];
    vc1.photoCaption = caption;
    MTViewController *vc2 = [segue destinationViewController];
    vc2.photoImage = imageRoll;
}
//Dismiss Keyboard
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

MTViewController.h

#import <UIKit/UIKit.h>
#import "ReaderViewController.h"
@interface MTViewController : UIViewController <ReaderViewControllerDelegate>
@property(nonatomic, assign) NSString *photoCaption;
@property(nonatomic, assign) UIImage *photoImage;
- (IBAction)didClickMakePDF:(id)sender;
@end

MTViewController.m photoCaption と photoImage を正しく渡して使用しましたか?

- (IBAction)didClickMakePDF {
    [self setupPDFDocumentNamed:@"NewPDF" Width:850 Height:1100];

    [self beginPDFPage];

    CGRect textRect = [self addText:photoCaption
                          withFrame:CGRectMake(kPadding, kPadding, 400, 200) fontSize:48.0f];

    CGRect blueLineRect = [self addLineWithFrame:CGRectMake(kPadding, textRect.origin.y + textRect.size.height + kPadding, _pageSize.width - kPadding*2, 4) 
                                       withColor:[UIColor blueColor]];

    UIImage *anImage = [UIImage imageNamed:@"photoImage"];
    CGRect imageRect = [self addImage:anImage 
                              atPoint:CGPointMake((_pageSize.width/2)-(anImage.size.width/2), blueLineRect.origin.y + blueLineRect.size.height + kPadding)];

    [self addLineWithFrame:CGRectMake(kPadding, imageRect.origin.y + imageRect.size.height + kPadding, _pageSize.width - kPadding*2, 4) 
                 withColor:[UIColor redColor]];

    [self finishPDF];

}
4

1 に答える 1

0

更新しました:

を使用self.xxx = xxxして、ある方法で保存し、別の方法で取得する必要がありますself.xxx。たとえば、使用する必要があります

self.imageRoll = [UIImage imageWithContentsOfFile:fPath];

imageRollコードで new を宣言する代わりに。そして、それはあなたのキャプションと同じです。

セグエの使い方が間違っています。

あなたの呼び方[self performSegueWithIdentifier:@"showPDF" sender:sender];は正しいです。しかし、その後、いくつかのカスタマイズを行うことができます

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"showPDF"]) {
        MTViewController *vc1 = [segue destinationViewController];
        vc1.photoCaption = self.caption;
        vc1.photoImage = self.imageRoll;
    }
}
于 2013-06-06T07:36:47.733 に答える