c# - 如何在 Xamarin.IOS 中返回到之前的 ViewController

标签 c# xamarin xamarin.ios

我在 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,PopPresent,Dismiss 搞混了。

当viewcontroller 放在Navigation 里面时,应该使用push 和pop 来控制堆栈。

修改代码:

backButton.TouchUpInside += (s,e) => {
  this.NavigationController.PopViewController(true); 
} 

引用

Presenting a View Controller

UINavigationController

关于c# - 如何在 Xamarin.IOS 中返回到之前的 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47808886/

相关文章:

c# - 将布局保存到位图(Xamarin)

android - Xamarin.Forms 预览器 - Android 应用程序项目必须引用包含此 xaml 文件的项目才能在预览器中呈现

c# - MonoTouch.Dialog 支持(字母)索引吗?

iphone - 是否有类似 "Codea"的应用程序,但用于 MonoTouch?

c# - 电子邮件地址混淆.net asp

c# - ASP.NET C# 截断

c# - .Net 中当前 CultureInfo 的距离单位

java - Parse.com 许可与反编译代码,用于使用 Xamarin 将 Java 库绑定(bind)到 C#

xamarin.ios - 带有 CFNetworkHandler 和 NTLM 的 HttpClient

C# WPF 在 XAML 中添加 KeyBinding 事件