0

自動入力メールを実装しようとしています。別のテスト環境でemailviewcontrollerが正しく配置されていますが、メッセージ本文に文字列を追加する方法がわかりません。基本的に、3 つの文字列の値を設定する GUI のルート コントローラーに 3 つのボタンがあります。私が望むのは、これらの 3 つの文字列がメッセージ本文で (可能であればコンマで区切られて) 再現されることだけです。これまでの私のコードは次のとおりです。

    -(IBAction)displayComposerSheet
    {

    NSArray *recipient = [NSArray arrayWithObjects:@"testemail@office.co.uk", nil];

    if([MFMailComposeViewController canSendMail])
    {
            MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc]             init];
        mailViewController.mailComposeDelegate = self;
        [mailViewController setSubject:@"Place holder ... this is a test subject"];
        [mailViewController setMessageBody: isHTML:NO];
        [mailViewController setToRecipients:recipient];


        [self presentModalViewController:mailViewController animated:YES];
    }
    else
        NSLog(@"Device is unable to send email in its current state");

    }

    -(void)mailComposeController:(MFMailComposeViewController *)controller     didFinishWithREsult:(MFMailComposeResult)result error:(NSError *)error
{
    [self dismissModalViewControllerAnimated:YES];
}
- (IBAction)addString1:(id)sender {

    NSString *string1;
    string1 = @"teststring1";

}

- (IBAction)addString2:(id)sender {

    NSString *string2;
    string2 = @"teststring2";
}

- (IBAction)addString3:(id)sender {
    NSString *string3;
    string3 = @"teststring3";
}
4

1 に答える 1

1

まず、.h ファイルで文字列を宣言して、.m 全体で使用できるようにします。

@interface ViewController : UIViewController
{
    NSString *string1;
    NSString *string2;
    NSString *string3;
}

次に、メール コンポーザーで、フォーマットされた文字列を使用して文字列を順番に表示します (%@ でエスケープ)。

    [mailViewController setMessageBody:[NSString stringWithFormat:@"%@, %@, %@",string1,string2,string3] isHTML:NO];

もちろん、ヘッダー ファイルで文字列を宣言した後は、ローカルで宣言する必要がないため、IBActions を次のように変更します。

   - (IBAction)addString1:(id)sender 
    {
        string1 = @"teststring1";
    }

    - (IBAction)addString2:(id)sender 
    {
        string2 = @"teststring2";
    }

    - (IBAction)addString3:(id)sender 
    {
        string3 = @"teststring3";
    }

さらに、(null) の不要なインスタンスがメッセージ本文に挿入されるのを避けるために、viewDidLoad でこれらの文字列に最初の空白値を与えることをお勧めします。この方法では、コンテンツなしで開始されますが、nil にはなりません。

- (void)viewDidLoad
{
    [super viewDidLoad];
    string1 = @"";
    string2 = @"";
    string3 = @"";
}
于 2012-09-05T18:17:52.837 に答える