iOS: Как вложить несколько файлов вложений в одну кнопку, используя метод pickerview? - PullRequest
0 голосов
/ 06 января 2012

У меня есть несколько файлов для прикрепления в окне выбора. Когда пользователь выбирает этот элемент просмотра выбора, он может нажать кнопку электронной почты, чтобы прикрепить выбранный файл. Как мне сделать это в моем окне выбора?

Вот мой пример кода.

М Файл:

-(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:@"first@example.com"]; 
        NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil]; 
        NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@example.com"]; 

        [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
    {

    }


}

1 Ответ

1 голос
/ 06 января 2012

Когда пользователь выбирает строки в ваших представлениях выбора, вы сохраняете заголовки строк в некоторых общих переменных, используя

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

Вы можете использовать один метод делегата pickerView для всех ваших представлений pickerView.Чтобы определить, какой pickerView выбран, вы должны получить отправителя.

Затем в вашем методе showEmail вы просто используете эти сохраненные переменные.

Пример кода.Просто свяжите 3 разных делегата с 3 слайдерами в 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];
}
...