【问题标题】:Getting appdelegate value from viewcontroller从 viewcontroller 获取 appdelegate 值
【发布时间】:2013-08-26 10:39:43
【问题描述】:

在 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

我在这里犯了什么错误

【问题讨论】:

    标签: ios objective-c viewcontroller appdelegate


    【解决方案1】:

    您可以访问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)")
    }
    

    【讨论】:

      【解决方案2】:

      您正在初始化viewDidLoad 中的appdelegate 成员变量,但在您调用setVolumeForAVAudioPlayer 时不会调用该方法!

      你在做

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-29
        • 1970-01-01
        • 2014-01-29
        • 2014-11-11
        • 2018-02-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多