【问题标题】:How to control AV Player from different controllers如何从不同的控制器控制 AV Player
【发布时间】:2013-08-03 20:29:53
【问题描述】:

我有 2 个 ViewController,每个都有几个按钮来播放和停止音频。此音频已部署在单独的模型中,以便能够从两个 ViewController 访问,但我不知道这是否是正确的方式...

#import <UIKit/UIKit.h> 
#import "AudioController.h"

@interface NowViewController : UIViewController

@property (nonatomic, strong) AudioController *AudioModel;

- (IBAction)PauseButton:(UIButton *)sender;
- (IBAction)PlayButton:(UIButton *)sender;

@end

#import "NowViewController.h"

@interface NowViewController ()

@end

@implementation NowViewController

- (void)viewDidLoad{

    [super viewDidLoad];
    self.AudioModel = [[AudioController alloc] init];

}

- (IBAction)PlayButton:(UIButton *)sender {

    [self.AudioModel PlayAudio];

}

- (IBAction)PauseButton:(UIButton *)sender {

    [self.AudioModel PauseAudio];
}

@end

#import <UIKit/UIKit.h>

#import "AudioController.h"

@interface CategoriesViewController : UIViewController

@property (nonatomic, strong) AudioController *AudioModel;

- (IBAction)PauseButton:(UIButton *)sender;
- (IBAction)PlayButton:(UIButton *)sender;

@end

#import "NowViewController.h"

@interface NowViewController ()

@end

@implementation NowViewController

- (void)viewDidLoad{
    [super viewDidLoad];
    self.AudioModel = [[AudioController alloc] init];
}

- (IBAction)PlayButton:(UIButton *)sender {
    [self.AudioModel PlayAudio];
}

- (IBAction)PauseButton:(UIButton *)sender {
    [self.AudioModel PauseAudio];
}

@end

我遇到的问题是,如果我从一页播放音频并导航到另一页,则无法停止音频。同样,我无法从多任务中播放/暂停。下面是 AudioModel 的代码:

#import <Foundation/Foundation.h>   
#import <AVFoundation/AVFoundation.h>

@interface AudioController : NSObject{

    AVPlayer *Player;
}

- (void)PlayAudio;
- (void)PauseAudio;

@end

#import "AudioController.h"

@implementation AudioController

- (void)PlayAudio {
    Player = [[AVPlayer alloc] initWithURL:[NSURL URLWithString:url]];
    [Player play];
}

- (void)PauseAudio {

    [Player pause];
}

NSString *url = @"http://jo.my/xxx";

@end

感谢您的帮助!

【问题讨论】:

  • 这个设计基本上没有问题,但是从你编写 AVPlayer 代码的方式来看,它看起来并不可行。
  • 就像每次我改变视图时它都会启用一个新会话,我不知道会是什么......

标签: ios model-view-controller avplayer


【解决方案1】:

您正在每个控制器的 viewDidLoad 方法中创建 AudioController 类的两个不同实例。

您可以通过多种方式解决您的问题。例如,将AudioController 类转换为单例。

【讨论】:

  • 它可以工作,但我无法使用物理控件或控制中心按钮来控制播放器。谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多