2013-08-23 8 views
11

In Appdelegate.h
ho importato il playerviewcontroller in entrambi i file Appdelegate.h e Appdelegate.m.Ottenere valore AppDelegate da viewcontroller

@class PlayerViewController; 
    @property(nonatomic)float volumeDelegate;   

In Appdelegate.m

@synthesize volumeDelegate; 
- (void)volumeChanged:(NSNotification *)notification 
{ 
volumeDelegate =1.0 
    PlayerViewController *volumeObject=[[PlayerViewController alloc]init]; 
[volumeObject setVolumeForAVAudioPlayer]; 
} 

In Playerviewcontroller.h

-(void)setVolumeForAVAudioPlayer; 

In Playerviewcontroller.m

@interface PlayerViewController() 
{ 
AppDelegate *appdelegate; 

} 
    -(void)viewDidLoad 
    { 
    appdelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; 
    } 

    -(void)setVolumeForAVAudioPlayer 
    { 
[appdelegate.sharedplayer setVolume:appdelegate.volumeDelegate]; 
NSLog(@"System Volume in player view: %f",appdelegate.volumeDelegate); 
} 

Quando eseguo questo ottengo il valore volumeDelegate zero come indicato di seguito.

volume di sistema in vista giocatore: 0,000000000

Qual è l'errore che sto facendo qui

risposta

27

È possibile accedere all'oggetto AppDelegate come qui di seguito

Objective-C

Definisci in questo modo:

AppDelegate appDelegate; 

accesso in questo modo:

appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; 

Usage:

- (void)setVolumeForAVAudioPlayer 
{ 
    [appDelegate.sharedplayer setVolume:appdelegate.volumeDelegate]; 
    NSLog(@"System Volume in player view: %f",appDelegate.volumeDelegate); 
} 

Swift:

definirlo in questo modo:

let appDelegate = UIApplication.shared.delegate as! AppDelegate 

Usage:

func setVolumeForAVAudioPlayer() 
{ 
    appDelegate.sharedPlayer.setVolume:appDelegate.VolumeDelegate 
    print("System Volume in player view: \(appDelegate.volumeDelegate)") 
} 
4

Stai inizializzare la variabile appdelegate membro in un viewDidLoad, ma questo metodo non viene chiamato in questo momento si chiama setVolumeForAVAudioPlayer!

Stai facendo

PlayerViewController *volumeObject=[[PlayerViewController alloc]init]; 
[volumeObject setVolumeForAVAudioPlayer]; 

Ma alloc init non rende punto di vista di viewController da caricare! viewDidLoad non viene chiamato affatto.