警告:尝试在**。ViewController上显示ZMNavigationController,其视图不在窗口层次结构中

时间:2018-03-12 08:57:15

标签: ios swift sdk

伙计们,NavigationController面临一个奇怪的问题。现有的答案根本没有帮助!!!!

以下是该应用的基本情景:

  
      
  1. 有两种观点 - 主视图和第二视图
  2.   
  3. 在主视图中,当我碰巧使用segue进入第二个视图时有一个按钮。
  4.   
  5. 在我在文本视图中输入某个字段并单击名为“join”的按钮后的第二个视图中,它会触发“joinMeeting()”函数   和会面应该加入。
  6.   

但是,当我这样做时,调试器会告诉我:

  

“警告:尝试出席   < ***。ViewController:*****>谁的观点不在窗口   层次!“

所以我已经阅读了大部分内容并且认为它是因为 viewDidAppear 方法而发生的,但我必须在 viewDidAppear 之前完成。点击按钮后,一切都会发生。

  

成功调用了joinMeeting()并且print方法返回0表示没有问题(https://developer.zoom.us/docs/ios/error-codes/)且成功的SDK连接但是在调试器中显示“警告”错误之后没有任何反应应用

如果有帮助,则触发joinBtn的代码:

/**
Triggers when Join Button is clicked from second view.
*/
    @IBAction func joinMeeting(_ sender: Any) {
            if( activityID.text == "" ) {
                let alert = UIAlertController(title: "Field is Blank", message: "Activity ID cannot be blank.", preferredStyle: UIAlertControllerStyle.alert)
                alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: nil))
                self.present(alert, animated: true, completion: nil)

                return;
            }


            let ms: MobileRTCMeetingService? = MobileRTC.shared().getMeetingService()
            if ms != nil {
                ms?.delegate = self;

                // //For Join a meeting
                let paramDict: [AnyHashable: Any] = [
                    kMeetingParam_Username: kSDKUserName,
                    kMeetingParam_MeetingNumber: activityID.text!,
                ]

                let ret: MobileRTCMeetError? = ms?.joinMeeting(with: paramDict)
                print("onJoinaMeeting ret:\(String(describing: ret))")
            }
        }

如果有人知道或了解我在这里缺少的东西,请提供帮助。

3 个答案:

答案 0 :(得分:0)

以下是解决问题的方法:

故事板配置: ViewController --Segue:Show - > JoinViewController

@IBAction func onClickJoin(_ sender: AnyObject) {
        //Main storyBoard
        let initialVC = UIStoryboard(name: "Main", bundle:nil).instantiateInitialViewController() as! UIViewController

        let appDelegate = (UIApplication.shared.delegate as! AppDelegate)

        appDelegate.window?.rootViewController = initialVC

        //Rest of the code
    }

答案 1 :(得分:0)

只需在要在其中执行调用的控制器上添加以下代码:

    override func viewWillAppear(_ animated: Bool) {
    let appDelegate = UIApplication.shared.delegate as? AppDelegate
  appDelegate?.window?.rootViewController  = self

}

答案 2 :(得分:0)

不幸的是,以上解决方案都不适合我。 所以这是我的解决方案。

添加此行

MobileRTC.shared().setMobileRTCRootController( self.navigationController)

=>当用户点击加入呼叫按钮时。

确保这些条件也应满足。

    用于打开ZOOM会议的
  1. ViewController应该是根导航控制器的一部分
  2. 请勿以模态形式显示当前的Zoom Meeting加入视图控制器。始终将其推入根导航控制器。