iOS:如何使用pickerview方法一键附加多个附件文件?

发布于 2024-12-25 17:53:17 字数 2206 浏览 1 评论 0原文

我有一个多个文件要附加到选择器视图中。当用户选择该选择器视图项目时,他们可以单击电子邮件按钮来附加所选文件。我该如何在选择器视图中执行此操作?

这是我的示例代码。

M 文件:

-(void)pickerViewEmail:(UIPickerView *)pickerViewEmail didSelectRow:(NSInteger)row inComponent:(NSInteger)component

{


    if ([[musicList objectAtIndex:row] isEqual:@"m1"])
    {

        MFMailComposeViewController *pickerEmail = [[MFMailComposeViewController alloc] init];
        pickerEmail.mailComposeDelegate = self;

        NSString *path = [[NSBundle mainBundle] pathForResource:@"m1" ofType:@"mp3"];
        NSData *myData = [NSData dataWithContentsOfFile:path];
        [pickerEmail addAttachmentData:myData mimeType:@"audio/mp3" fileName:@"m1"];

        [pickerEmail setSubject:@"Hello!"];

        // Set up recipients
        NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"]; 
        NSArray *ccRecipients = [NSArray arrayWithObjects:@"[email protected]", @"[email protected]", nil]; 
        NSArray *bccRecipients = [NSArray arrayWithObject:@"[email protected]"]; 

        [pickerEmail setToRecipients:toRecipients];
        [pickerEmail setCcRecipients:ccRecipients]; 
        [pickerEmail setBccRecipients:bccRecipients];

        // Fill out the email body text
        NSString *emailBody = @"Hello";
        [pickerEmail setMessageBody:emailBody isHTML:NO];

        [self presentModalViewController:pickerEmail animated:YES];
        [pickerEmail release];

    }

电子邮件按钮:我如何从这里开始。

-(IBAction)showEmail
{

    if ([MFMailComposeViewController canSendMail])
    {
                 [self pickerEmail]; I have a yellow error when i call this. What is the right solution?

    }

    else
    {

    }


}

I have a multiple file to attach inside the picker view. When user select that picker view item, they can click email button to attach the chosen file. How do I do so in my picker view?

Here is my sample code.

M File :

-(void)pickerViewEmail:(UIPickerView *)pickerViewEmail didSelectRow:(NSInteger)row inComponent:(NSInteger)component

{


    if ([[musicList objectAtIndex:row] isEqual:@"m1"])
    {

        MFMailComposeViewController *pickerEmail = [[MFMailComposeViewController alloc] init];
        pickerEmail.mailComposeDelegate = self;

        NSString *path = [[NSBundle mainBundle] pathForResource:@"m1" ofType:@"mp3"];
        NSData *myData = [NSData dataWithContentsOfFile:path];
        [pickerEmail addAttachmentData:myData mimeType:@"audio/mp3" fileName:@"m1"];

        [pickerEmail setSubject:@"Hello!"];

        // Set up recipients
        NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"]; 
        NSArray *ccRecipients = [NSArray arrayWithObjects:@"[email protected]", @"[email protected]", nil]; 
        NSArray *bccRecipients = [NSArray arrayWithObject:@"[email protected]"]; 

        [pickerEmail setToRecipients:toRecipients];
        [pickerEmail setCcRecipients:ccRecipients]; 
        [pickerEmail setBccRecipients:bccRecipients];

        // Fill out the email body text
        NSString *emailBody = @"Hello";
        [pickerEmail setMessageBody:emailBody isHTML:NO];

        [self presentModalViewController:pickerEmail animated:YES];
        [pickerEmail release];

    }

Email Button: How do i start from here.

-(IBAction)showEmail
{

    if ([MFMailComposeViewController canSendMail])
    {
                 [self pickerEmail]; I have a yellow error when i call this. What is the right solution?

    }

    else
    {

    }


}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

微凉徒眸意 2025-01-01 17:53:17

当用户在选择器视图中选择行时,您将行标题保存到一些常用变量中
使用

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

您可以对所有 pickerView 使用一种 pickerView 委托方法。要确定选择了哪个 pickerView,您应该检索发件人。

然后在您的 showEmail 方法中,您只需使用保存的变量。

示例代码。只需将 3 个不同的委托绑定到 IB 中的 3 个滑块即可:

-(IBAction)slider1Changed:(id)sender {
    UISlider *slider = (UISlider *) sender;
    int progressAsInt =(int)(slider.value + 0.5f);
    NSString *newText =[[NSString alloc]
                        initWithFormat:@"%d",progressAsInt];
    label1.text = newText;
    NSString *imgFileName = [NSString stringWithFormat:@"gold%i.png", progressAsInt];
    image1.image = [UIImage imageNamed:imgFileName];

    [newText release];
}

-(IBAction)slider2Changed:(id)sender {
    UISlider *slider = (UISlider *) sender;
    int progressAsInt =(int)(slider.value + 0.5f);
    NSString *newText =[[NSString alloc]
                        initWithFormat:@"%d",progressAsInt];
    label2.text = newText;
    NSString *imgFileName = [NSString stringWithFormat:@"gold%i.png", progressAsInt];
    image2.image = [UIImage imageNamed:imgFileName];
    [newText release];
}

-(IBAction)slider3Changed:(id)sender {
    UISlider *slider = (UISlider *) sender;
    int progressAsInt =(int)(slider.value + 0.5f);
    NSString *newText =[[NSString alloc]
                        initWithFormat:@"%d",progressAsInt];
    label3.text = newText;
    NSString *imgFileName = [NSString stringWithFormat:@"gold%i.png", progressAsInt];
    image3.image = [UIImage imageNamed:imgFileName];
    [newText release];
}

When user selects rows in your pickerviews, you save row titles to some common variables
using

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

You can use one pickerView delegate method for all your pickerViews. To determine, which pickerView is selected you should retrieve sender.

Then in your showEmail method you just use that saved variables.

Sample code. Just bind 3 different delegates to 3 sliders in IB:

-(IBAction)slider1Changed:(id)sender {
    UISlider *slider = (UISlider *) sender;
    int progressAsInt =(int)(slider.value + 0.5f);
    NSString *newText =[[NSString alloc]
                        initWithFormat:@"%d",progressAsInt];
    label1.text = newText;
    NSString *imgFileName = [NSString stringWithFormat:@"gold%i.png", progressAsInt];
    image1.image = [UIImage imageNamed:imgFileName];

    [newText release];
}

-(IBAction)slider2Changed:(id)sender {
    UISlider *slider = (UISlider *) sender;
    int progressAsInt =(int)(slider.value + 0.5f);
    NSString *newText =[[NSString alloc]
                        initWithFormat:@"%d",progressAsInt];
    label2.text = newText;
    NSString *imgFileName = [NSString stringWithFormat:@"gold%i.png", progressAsInt];
    image2.image = [UIImage imageNamed:imgFileName];
    [newText release];
}

-(IBAction)slider3Changed:(id)sender {
    UISlider *slider = (UISlider *) sender;
    int progressAsInt =(int)(slider.value + 0.5f);
    NSString *newText =[[NSString alloc]
                        initWithFormat:@"%d",progressAsInt];
    label3.text = newText;
    NSString *imgFileName = [NSString stringWithFormat:@"gold%i.png", progressAsInt];
    image3.image = [UIImage imageNamed:imgFileName];
    [newText release];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文