从viewcontroller获取appdelegate值

时间:2013-08-23 11:32:05

标签: ios objective-c viewcontroller appdelegate

在Appdelegate.h
我在playerviewcontrollerAppdelegate.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

我在这里犯的错误是什么

2 个答案:

答案 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