C.A*_*lar 5 xcode stream ios avplayer avplayerviewcontroller
我有一个带有单个播放器和登录名的 iOS 应用程序。它应该像这样工作:
但是,除了最后一步之外,我的代码可以完成所有操作。如果用户注销并登录 - 它开始播放流,但是当您单击完成按钮并尝试退出视频时,它不起作用。视频保持全屏,并给出以下警告:
Warning: <AVPlayerViewController: 0x7f9fca08aa00> is trying to exit full screen, but is not in its view's window's view controller hierarchy. This results in undefined behavior.
Run Code Online (Sandbox Code Playgroud)
我对 xcode ios 和objectiveC 真的很陌生,我的代码如下
- (void)viewDidLoad {
NSLog(@"ChannelListingViewController::viewDidLoad(): Called...");
[super viewDidLoad];
self.check=1;
NSLog(@"ChannelListingViewController::viewDidLoad(): Exiting...");
}
-(void) playVideo
{
self.channelURL = [TulixAppGlobalConfig getUserSubscribedPlanChannels];
NSURL *url = [[NSURL alloc] initWithString:[self.channelURL[1] getChannelHlsStreamURL]];
self.player = [AVPlayer playerWithURL:url];
// create a player view controller
[self presentViewController:controller animated:YES completion:nil];
self.controller.player = self.player;
[self.player play];
}
-(void) viewDidAppear:(BOOL)animated
{
self.controller = [[AVPlayerViewController alloc] init];
NSLog(@"ChannelListingViewController::viewDidAppear(): Called...");
if(self.check==0)
{
NSLog(@" 0 checkvalue: %i",check);
[self showLogoutConfirmationDialog];
}
else{
self.check =0;
NSLog(@" 1 checkvalue: %i",check);
[self playVideo];
}
[self spawnKeepAliveThread];
NSLog(@"ChannelListingViewController::viewDidAppear(): Exiting...");
}
-(void) showLogoutConfirmationDialog
{
void (^ptrFuncCompletionBlock)(void) = ^(void) { NSLog(@"ChannelListingViewController::showLogoutConfirmationDialog():GENERIC CALL BACK...");
[self attemptToLogoutUser];
};
NSLog(@"ChannelListingViewController::showLogoutConfirmationDialog(): Called...");
UIAlertAction* alertActionYes = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
//Do Some action here
NSLog(@"ChannelListingViewController::showLogoutConfirmationDialog:: Called for YES...");
self.check = 1;
NSLog(@" yes checkvalue: %i",check);
[self.activeAlterController dismissViewControllerAnimated:NO completion:ptrFuncCompletionBlock];
[self attemptToLogoutUser];
}];
UIAlertAction* alertActionNo = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel
handler:^(UIAlertAction * action) {
NSLog(@"ChannelListingViewController::showLogoutConfirmationDialog:: Called for NO...");
[self playVideo];
}];
NSMutableArray* arrayAlertActions = [NSMutableArray arrayWithObjects:alertActionYes, alertActionNo, nil];
self.activeAlterController = [HelperUtility showMultiButtonDialogHavingTitle:@"Logout" withMessage:@"Are you sure you want to log out?" andAlertActions:arrayAlertActions];
[self presentViewController:self.activeAlterController animated:YES completion:nil];
NSLog(@"ChannelListingViewController::showLogoutConfirmationDialog(): Exit ");
Run Code Online (Sandbox Code Playgroud)
}
我真的不明白为什么它在注销后不起作用并需要帮助。
您只需将 avplayer 控制器与窗口视图相关联即可。相反,只提供 avcontroller 添加下面的行 -
目标C-
[self.view.window.rootViewController PresentViewController:控制器动画:是完成:nil];
斯威夫特 5 -
view.window.rootViewController?.present(控制器,动画:true)
| 归档时间: |
|
| 查看次数: |
1232 次 |
| 最近记录: |