在Appdelegate.h
我在playerviewcontroller
和Appdelegate.h
文件中导入了Appdelegate.m
。
@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
我在这里犯的错误是什么
答案 0 :(得分:34)
您可以访问AppDelegate
对象,如下所示
<强>目标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)")
}
答案 1 :(得分:4)
您正在appdelegate
初始化viewDidLoad
成员变量,但在您拨打setVolumeForAVAudioPlayer
时,系统不会调用该方法!
你正在做
PlayerViewController *volumeObject=[[PlayerViewController alloc]init];
[volumeObject setVolumeForAVAudioPlayer];
但是alloc init
并没有使viewController的视图加载!根本没有调用viewDidLoad
。