子视图控制器 <JWPlayerKit.JWplayerViewController> 应该有父视图控制器 <RNSScreen> 但实际父级是 <UIViewContr
Posted
技术标签:
【中文标题】子视图控制器 <JWPlayerKit.JWplayerViewController> 应该有父视图控制器 <RNSScreen> 但实际父级是 <UIViewController>【英文标题】:Child view controller <JWPlayerKit.JWplayerViewController> should have parent view controller <RNSScreen> but actual parent is <UIViewController> 【发布时间】:2021-09-20 02:22:25 【问题描述】:我正在尝试使用库 react-native-jw-media-player@0.2.0-beta.2 将 JWPlayer SDK v4 实现到 React Native ios 应用程序中。
如果播放器屏幕是应用程序加载时显示的初始屏幕,则播放器嵌入没有任何问题,但是当导航离开和返回播放器屏幕时(使用 react-navigation 选项卡),将引发以下异常:
Exception thrown while executing UI block: child view controller:<JWPlayerKit.JWPlayerViewController: 0x7fd744bab800> should have parent view controller:<RNSScreen: 0x7fd6db935310> but actual parent is:<UIViewController: 0x7fd745a057a0>
我是移动开发的新手(来自 React)并且已经花费了无数小时试图解决这个问题,但我没有得到任何帮助,非常感谢!
【问题讨论】:
一个名为RNSScreen
的类预计将作为 ViewController 强加。对你没有多大帮助,但误导性选择的名称方案必须经常导致误导性的编码错误。在 iOS 上,屏幕不是视图可能会对您有所帮助。
您最终找到解决方案了吗?我有同样的问题吗?
@Cheyne 我在下面添加了我的解决方案。希望对您有所帮助!
【参考方案1】:
虽然它不是完全修复,但我设法通过创建隐藏的 <JWPlayer>
组件并将其添加到 App.js 来解决此问题。现在<JWPlayer>
的任何后续实例都可以按预期工作。
这是隐藏的播放器组件:
export default function HiddenPlayer()
const player = useRef(null);
return (
<View>
<JWPlayer
ref=player
style=styles.video
config=...config
/>
</View>
);
const styles = StyleSheet.create(
video:
display: 'none',
,
);
【讨论】:
以上是关于子视图控制器 <JWPlayerKit.JWplayerViewController> 应该有父视图控制器 <RNSScreen> 但实际父级是 <UIViewContr的主要内容,如果未能解决你的问题,请参考以下文章