[英]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.