11

在 Appdelegate.h
中 ,我在和文件playerviewcontroller中都导入了。Appdelegate.hAppdelegate.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

我在这里犯了什么错误

4

2 回答 2

34

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)")
}
于 2013-08-23T11:34:38.653 回答
4

您正在初始化 a 中的appdelegate成员变量viewDidLoad,但在您调用的那一刻没有调用该方法setVolumeForAVAudioPlayer

你正在做的

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

alloc init不会让 viewController 的视图加载!viewDidLoad根本没有被调用。

于 2013-08-23T11:50:41.907 回答