2013-08-23 27 views
11

獲得的appdelegate值在Appdelegate.h
我在這兩個Appdelegate.hAppdelegate.m文件導入playerviewcontroller從視圖 - 控制

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

在Appdelegate.m

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

在Playerviewcontroller.h

-(void)setVolumeForAVAudioPlayer; 

在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); 
} 

當我運行這個我得到volumeDelegate值爲零如下。在播放器視圖

系統卷:0.000000000

什麼是我做這裏的錯誤

回答

27

您可以訪問到AppDelegate對象像下面

Objective-C的

定義它是這樣的:

AppDelegate appDelegate; 

訪問這樣的:

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

用法:

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

斯威夫特:

將其定義是這樣的:

let appDelegate = UIApplication.shared.delegate as! AppDelegate 

用法:

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

你初始化appdelegate成員變量在viewDidLoad,但該方法是不是你叫setVolumeForAVAudioPlayer時刻叫!

你做

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

alloc init沒有任何的viewController的視圖來加載!根本沒有調用viewDidLoad

相關問題