我有一个应用程序,该应用程序位于注册表中,当用户单击“提交”时,会将其带到上一页。在上一页上时,如果用户单击返回,则会将他们带回我不想要的注册页面。如何从堆栈中删除该注册视图?

这是我目前的方法:

//inside MyRegistrationController button press
MyPreviousController SVC = this.Storyboard.InstantiateViewController("MyPreviousController") as MyPreviousController;
            if(SVC != null){
                SVC.offender = offender;


                //var viewControllers = this.NavigationController.ViewControllers;
                //viewControllers[viewControllers.Length - 1].View.RemoveFromSuperview();
                //this.NavigationController.ViewControllers = viewControllers;

                this.NavigationController.PopViewController(true);
                this.NavigationController.PushViewController(SVC, true);
            }

这种当前方法对堆栈有一些怪异,我单击MyRegistrationController上的按钮,然后转到MyPreviousController(未更新),然后快速转到MyPreviousController的更新版本,回到MyPreviousController的更新版本,然后如果我单击“后退”按钮我回到MyPreviousController

最佳答案

好吧,我最终使它开始工作。我的问题最终有两个方面。一个我需要弹出视图,另外两个我需要用MyPreviousController重载表数据(我没有提出这个问题)。因此,我需要执行以下操作:

为了简单地弹出当前控制器,我只需要说:

//inside MyRegistrationController button press
MyPreviousController SVC = this.Storyboard.InstantiateViewController("MyPreviousController") as MyPreviousController;
        if(SVC != null){
            SVC.offender = offender;

            this.NavigationController.PopViewController(true);
}

但是,这样做只会导致MyPrevious中的表无法更新。所以我需要把它放在MyPreviousController.cs中:
public override void ViewWillAppear (bool animated)
    {
        base.ViewWillAppear (animated);
        InvokeOnMainThread (delegate {
            TableView.Source = source;
            TableView.ReloadData();
        });
    }

并且成功更新了表格并删除了注册视图

10-08 07:23