Xamarin IOS Navcontroller异常

时间:2018-08-18 16:24:31

标签: c# ios

我遇到了一个例外,由于我的知识有限,我无法解决自己。 我在IOS应用程序中使用滑出菜单,以便在应用程序ViewControllers中导航。

每当我第二次尝试导航至同一ViewController时,都会遇到异常:

“ NSInvalidArgumentException原因:不支持将同一视图控制器实例多次推送”

代码如下:

rolladeButton.TouchUpInside += (o, e) => {
if (NavController.TopViewController as Rolladecontroller == null)
     NavController.PushViewController(rolladeController, false);
 }

我第一次按下rolladeButton时,第二次遇到上面的异常。 我花了几个小时,才想到了这个“解决方案”

lichtButton.TouchUpInside += (o, e) => {

if (NavController.TopViewController as ContentController == null && pushedlicht == 0) {
NavController.PushViewController(contentController, false);
SidebarController.CloseMenu();
pushedlicht++;
}
else
{                                 
NavController.PopToViewController(contentController, false);
}

现在这对您来说可能看起来很愚蠢,但这至少可以为我完成工作……至少在我尝试添加第三个菜单按钮之前。 使用当前3种不同ViewController的解决方案,我再次遇到异常: “试图弹出到不存在的视图控制器。”甚至我已经打开过一次。

我的猜测:先前已添加的ViewController已从堆栈中删除。由于我的变量,它试图将其推到甚至不存在的地方。

为什么(NavController.TopViewController as Rolladecontroller == null)始终为真? 有人可以在这里帮助我如何正确执行此操作吗?

现在我用这个

        lichtButton.TouchUpInside += (o, e) => {

            try
            {
                NavController.PushViewController(contentController, false);
                SidebarController.CloseMenu();

            }
            catch (Exception E)
            {                                 

            NavController.PopToViewController(contentController, false);
                SidebarController.CloseMenu();
            }
            startButton.SetBackgroundImage(UIImage.FromFile("start_buttoninactive"), UIControlState.Normal);
            lichtButton.SetBackgroundImage(UIImage.FromFile("licht_buttonactive"), UIControlState.Normal);
            RolladeButton.SetBackgroundImage(UIImage.FromFile("rollade_buttoninactive"), UIControlState.Normal);


            };

但是它不认为这是正确的方法,如果我想将其提交批准,它可能会失败。

0 个答案:

没有答案