[英]How to unload uiView with subview
我很难弄清楚如何卸载我的 UIView。
所以这就是我在做什么。
我有一个 UI 视图类
@protocol JitsiViewDelegate <NSObject>
@optional
- (void)meetingEnded;
@end
@interface JitsiView : UIView
@property (nonatomic, nullable, weak) id<JitsiViewDelegate> delegate;
- (void)join:(JitsiMeetingConfig*)config;
@end
加入 (.m) 文件的位置如下所示
- (void) join:(JitsiMeetingConfig*)config
{
RCTBridge *bridge = [[Jitsi sharedInstance] getReactBridge];
rootView = [[RNRootView alloc] initWithBridge:bridge
moduleName: @"JitsiTest"
initialProperties: [self getInitialProperties:config]];
rootView.backgroundColor = self.backgroundColor;
// Add rootView as a subview which completely covers this one.
[rootView setFrame:[self bounds]];
rootView.autoresizingMask
= UIViewAutoresizingFlexibleWidth
| UIViewAutoresizingFlexibleHeight;
[self addSubview:rootView];
}
在上面
RNRootView 是这个
而RCTBridge就是这个
我在一个 swift 项目中使用它
import UIKit
import JitsiSdk;
class ViewController: UIViewController {
@IBOutlet weak var videoButton: UIButton?
fileprivate var JitsiView: jitsiView?
fileprivate var config: JitsiMeetingConfig?
override func viewDidLoad() {
super.viewDidLoad()
//Config (removed code intentionally as it wasn't realvent)
}
@IBAction func joinMeeting(_ sender: Any) {
let jitsiView = JitsiView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height:self.view.bounds.size.height ))
.delegate = self
self.jitsiView = jitsiView;
self.view.addSubview(jitsiView)
jitsiView.join(config);
}
fileprivate func onMeetingEnded() {
if(jitsiView != nil) {
jitsiView?.removeFromSuperview()
}
}
}
extension ViewController: JitsiViewDelegate {
func meetingEnded() {
onMeetingEnded()
}
}
在会议结束时,我想删除JitsiView
并在加载JitsiMeetView
之前显示视图控制器中的内容,但当前代码抛出以下错误
'NSInternalInconsistencyException',原因:'从主线程访问布局引擎后,不得从后台线程对其进行修改。'
有人可以帮助我理解为什么我会收到此错误以及如何解决它?
从主线程访问布局引擎后,不得从后台线程执行对布局引擎的修改。
这意味着您正在尝试在后台线程上调用onMeetingEnded()
。 所有 UI 工作都必须在主/UI 线程上进行。
这是你可以做的 -
func meetingEnded() {
DispatchQueue.main.async { [weak self] in
self?.onMeetingEnded()
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.