Ade*_*cus 1 c# xamarin.ios xamarin
我在Visual Studio Xamarin(不是Xamarin.Forms)中使用两个视图控制器制作了一个应用程序。第一个视图控制器是项目列表,第二个包含项目的详细信息。当用户点击列表中的项目时,第二个视图将打开并显示代码
DetailViewController detailController = this.Storyboard.InstantiateViewController("DetailViewController") as DetailViewController;
detailController._idx = idx;
this.NavigationController.PushViewController(detailController, true);
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何以编程方式返回到第一个ViewController-例如,在DetailViewController上有“ Go Back”按钮,我尝试使用此代码:
backButton.TouchUpInside += (s,e) => {
this.NavigationController.DismissViewController(true, null)
};
Run Code Online (Sandbox Code Playgroud)
但这没有任何结果。有人可以帮我吗?
更新
我将代码更改为:
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);
}
Run Code Online (Sandbox Code Playgroud)
这适用于“返回”,但是当我尝试在列表中选择相同或另一个项目并打开新的DetailViewController时,它将抛出异常“ System.NullReferenceException:对象引用未设置为对象的实例”
this.NavigationController.PushViewController(detailController, true);
Run Code Online (Sandbox Code Playgroud)
(详细信息-我运行应用程序,打开ListViewController,选择item1,打开DetailViewController,点击BackButton,打开ListViewController,选择任何项目,异常)
你有Push,Pop和Present,Dismiss混淆。
将viewcontroller放置在Navigation中时,应使用push和pop来控制堆栈。
修改您的代码:
backButton.TouchUpInside += (s,e) => {
this.NavigationController.PopViewController(true);
}
Run Code Online (Sandbox Code Playgroud)
参考
| 归档时间: |
|
| 查看次数: |
2186 次 |
| 最近记录: |