我有一个应用程序,该应用程序位于注册表中,当用户单击“提交”时,会将其带到上一页。在上一页上时,如果用户单击返回,则会将他们带回我不想要的注册页面。如何从堆栈中删除该注册视图?
这是我目前的方法:
//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();
});
}
并且成功更新了表格并删除了注册视图