我在 VisualStudio Xamarin(不是 Xamarin.Forms)中使用两个 View Controller 制作了一个应用程序。第一个 View Controller 是项目列表,第二个包含项目的详细信息。当用户点击列表中的项目时,第二个 View 打开代码
DetailViewController detailController = this.Storyboard.InstantiateViewController("DetailViewController") as DetailViewController;
detailController._idx = idx;
this.NavigationController.PushViewController(detailController, true);
但我不知道如何以编程方式返回到第一个 ViewController - 例如 DetailViewController 上有按钮“返回” 我尝试使用这段代码:
backButton.TouchUpInside += (s,e) => {
this.NavigationController.DismissViewController(true, null)
};
但它没有给出任何结果。 有人可以帮我解决这个问题吗?
已更新
我将代码更改为:
backButton.TouchUpInside += (s,e) => {
this.NavigationController.DismissViewController(true, async () => { await DismissViewControllerAsync(true); });
ListViewController listController = this.Storyboard.InstantiateViewController("ListViewController ") as ListViewController;
this.NavigationController.PresentViewController(listController, true, null);
}
这适用于“返回”,但是当我尝试在列表中选择相同或另一个项目并打开新的 DetailViewController 时,它在
this.NavigationController.PushViewController(detailController, true);
(详细信息 - 我运行应用程序,ListViewController 打开,我选择 item1,DetailViewController 打开,我点击 BackButton,ListViewController 打开,我选择任何项目,异常)
最佳答案
你把 Push,Pop
和 Present,Dismiss
搞混了。
当viewcontroller 放在Navigation 里面时,应该使用push 和pop 来控制堆栈。
修改代码:
backButton.TouchUpInside += (s,e) => {
this.NavigationController.PopViewController(true);
}
引用
关于c# - 如何在 Xamarin.IOS 中返回到之前的 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47808886/