从另一个类调用方法不会执行整个方法

时间:2015-07-23 20:47:15

标签: xcode macos function methods call

在OSX应用程序中,我有一个主类A和一个第二类B.两个都同时运行一个窗口。

在A类中有一个按钮可以在AVPlayerView中播放电影(称为播放器视图)[电影先前加载到PlayerView中!]:

- (IBAction)runMovieN:(id)sender {

    [playerView.player play];

}

这完全没问题。单击按钮后立即播放电影。

另一方面,在B类中有一个按钮,它调用A类中的方法......

- (IBAction)runMovie:(id)sender {

    ViewController *runMovieButton = [[ViewController alloc] init];
    [runMovieButton runMovie];

}

...将在A类中运行此方法:

- (void)playPause {

    NSLog(@"A");
    [playerView.player play];

}

问题是,日志将完全打印出来,但无论在那里有什么内容,此方法中的任何其他内容都将被忽略。除日志外,括号的内容将被完全忽略。

解决方案可能非常简单,但我无法想出任何可行的解决方案。

1 个答案:

答案 0 :(得分:0)

在MainViewController.h中

@interface MainViewController : UIViewController
-(void)playMedia:(NSURL*)url;
@end

在MainViewController.m中

@interface MainViewController ()
@property(nonatomic, retain) AVPlayerLayer *layer;
@property(nonatomic, retain)  AVPlayer *player;
@end

@implementation MainViewController

-(void)playMedia:(NSURL*)url{

    self.player = [AVPlayer playerWithURL:url];
    self.layer = [AVPlayerLayer playerLayerWithPlayer:self.player];
    self.player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
    self.layer.frame = CGRectMake(0, 0, 200, 200);
    [self.view.layer addSublayer: self.layer];

    [self.player play];
}

-(IBAction)playButton:(id)sender
{
    [self playMedia:[NSURL URLWithString:@"http://content.jwplatform.com/manifests/vM7nH0Kl.m3u8"]];
}

-(IBAction)moveToChild:(id)sender
{
    [self.layer.player pause];
    [self.layer removeFromSuperlayer];
    self.player=nil;

    ChildViewController* childView = [[ChildViewController alloc] initWithNibName:@"ChildViewController" bundle:nil];
    [self presentViewController:childView animated:YES completion:nil];
}

@end

在你的ChildViewController.h

@interface ChildViewController : MainViewController

@end

在您的ChildViewController.m

  -(IBAction)playButton:(id)sender{
    [self playMedia:[NSURL URLWithString:@"http://srv6.zoeweb.tv:1935/z330-live/stream/playlist.m3u8"]];
}

请注意,如果他们在两个班级中没有父母子女关系,您也可以使用代表在Viewcontrollers之间进行互动