iCulture forum | iPhone, iPad,  iPod touch, Apple TV en iOS

iCulture forum | iPhone, iPad, iPod touch, Apple TV en iOS (https://forum.iculture.nl/)
-   Ontwikkelen voor iOS (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/)
-   -   Audio afspelen incl. plist + buttons + uislider (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/108232-audio-afspelen-incl-plist-buttons-uislider.html)

gobelz 29-12-11 11:10

Audio afspelen incl. plist + buttons + uislider
 
Hallo,

In mijn vorige topic over dit onderwerp wilde ik graag weten hoe:
- UITableView (didselectrow)
- .plist
- Afspelen audio bestand (.mp3)

Een rij wordt geselecteerd en de bijbehorende audiobestand wordt afgespeeld.

Dit heb ik opgelost met:
Code:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
           
        NSUInteger section = [indexPath section];
        NSUInteger row = [indexPath row];
       
    NSString *key = [keys objectAtIndex:section];
    NSArray *nameSection = [names objectForKey:key];
       
        DetailViewController *detailController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:detailController animated:YES];

        detailController.titel.text = [[nameSection objectAtIndex:row] objectForKey:@"name"];
        detailController.omschrijving.text = [[nameSection objectAtIndex:row] objectForKey:@"description"];
        detailController.title = [[nameSection objectAtIndex:row] objectForKey:@"name"];

    NSString *filename = [[nameSection objectAtIndex:row] objectForKey:@"sound"];
    NSLog(@"Filename equals: %@", filename);
    NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"];
    NSLog(@"Path equals: %@", path);
   
        NSError *error;
        //audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
       
    AVAudioPlayer *newAVAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];   
    [self setAudioPlayer:newAVAudioPlayer];
    [newAVAudioPlayer release];
   
        audioPlayer.delegate = self;
    [audioPlayer prepareToPlay];
    [audioPlayer setNumberOfLoops:0];
    [audioPlayer play];
   
        [detailController release];

}

Nu wil ik hieraan een aantal knopjes toevoegen en een UISlider om het geluid te kunnen beheren.

Laten we zeggen:
Code:

- (IBAction) stopSound {
[audioPlayer stop];
}

Ik heb dit zowel in mijn rootview als detailview aangeroepen, maar er wordt hier niet op gereageerd.

Het aanroepen van de audio doe ik dus d.m.v. een .plist en in de 'didselectforrow' in de rootviewcontroller.

Heeft er iemand misschien tips, omdat het mij niet lukt om het met een standaard aanroep te doen.

Groet,

gobelz 24-01-12 21:03

Iemand nog een reactie hierop? Ik ben er nog steeds niet uit..

Graag jullie hulp..

Whacko 25-01-12 15:05

Weet je zeker dat de method stopSound wordt aangeroepen?

gobelz 25-01-12 15:36

Ik heb het anders aangepakt. Ik kwam hier gister laat in de avond nog uit.

Enkele voorbeelden:
Code:

    detailController.detailItem = [self.sur objectAtIndex: indexPath.row];
vanuit de didselectrow in de root.

Vervolgens in de detailview:
Code:

- (void)setDetailItem:(id)newDetailItem {
   
    if (detailItem != newDetailItem) {
        [detailItem release];
        detailItem = [newDetailItem retain];
       
        // Update the view.
        sur.text = [detailItem objectForKey:@"sur"];
        an.text = [detailItem objectForKey:@"an"];
       
        NSString *filename = [detailItem objectForKey:@"ar"];
        NSLog(@"Filename equals: %@", filename);
        NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"];
        NSLog(@"Path equals: %@", path);
        //Check of de NSLog outputs kloppen!!!!
       
        NSError *error;
        //audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
       
        AVAudioPlayer *newAVAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];   
        [self setAudioPlayer:newAVAudioPlayer];
        [newAVAudioPlayer release];
       
        audioPlayer.delegate = self;
        [audioPlayer prepareToPlay];
        [audioPlayer setNumberOfLoops:0];
        audioPlayer.volume = 0.5;

    }
}

en vervolgens werken de actions (play en stop) zoals het hoort..

Zoals je kan zien, ik heb al het troep van didselectrow in de root overgegooid naar de detailview.. Dit werkt voor mij prettiger.. Misschien dat andere hier goeds mee hebben..

Nogmaals, bedankt voor je reactie. Kan jij hier misschien een aanvulling op geven. Is dit goed aangepakt?

Groet,

Citaat:

Oorspronkelijk geplaatst door Whacko (Bericht 765147)
Weet je zeker dat de method stopSound wordt aangeroepen?



Alle tijden zijn GMT +2. Het is nu 17:33.