0

我正在尝试实现自动填充的电子邮件。我在单独的测试环境中正确弹出了 emailviewcontroller,但我无法弄清楚如何将字符串添加到消息正文中。基本上我在 gui 的根控制器上有三个按钮,用于设置三个字符串的值。我想要的只是在消息正文中重现这三个字符串(如果可能,用逗号分隔)。到目前为止,这是我的代码:

    -(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 中为这些字符串提供一个初始空白值。这样一开始将没有任何内容,但它们不会是零。

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