Przeglądaj źródła

fix: 修复从房间进入别的界面,然后房间结束,此时返回会进入空的房间界面

陈文艺 1 tydzień temu
rodzic
commit
3eed1743cf

+ 6 - 1
Lanu/Views/Room/LNRoomViewController.swift

@@ -18,6 +18,9 @@ extension UIView {
             navigationController.popToViewController(liveVC, animated: true)
             return
         }
+        
+        let index = navigationController.viewControllers.firstIndex(where: { $0 is LNRoomViewController })
+        
         showLoading()
         LNRoomManager.shared.leaveRoom { success in
             guard success else {
@@ -27,7 +30,7 @@ extension UIView {
             LNRoomManager.shared.joinRoom(roomId: id) { roomId in
                 dismissLoading()
                 guard let roomId else { return }
-                if let index = navigationController.viewControllers.firstIndex(where: { $0 is LNRoomViewController }) {
+                if let index {
                     var viewControllers = Array(navigationController.viewControllers[0..<index])
                     viewControllers.append(LNRoomViewController(roomId))
                     navigationController.setViewControllers(viewControllers, animated: true)
@@ -70,6 +73,8 @@ extension LNRoomViewController: LNRoomViewModelNotify {
     func onRoomClosed() {
         if view.window != nil {
             navigationController?.popViewController(animated: true)
+        } else if let index = navigationController?.viewControllers.firstIndex(of: self) {
+            navigationController?.viewControllers.remove(at: index)
         }
     }
 }

+ 2 - 1
Lanu/Views/Room/Message/LNRoomChatMessageCell.swift

@@ -93,7 +93,8 @@ extension LNRoomChatMessageCell {
         bodyView.addSubview(bubble)
         bubble.snp.makeConstraints { make in
             make.top.equalTo(nameLabel.snp.bottom).offset(4)
-            make.horizontalEdges.equalToSuperview()
+            make.leading.equalToSuperview()
+            make.trailing.lessThanOrEqualToSuperview()
             make.bottom.equalToSuperview()
         }