gpt4 book ai didi

ios - 在弹出时将数据传回 uiviewcontroller (NavigationController.PopViewController)

转载 作者:行者123 更新时间:2023-11-28 19:29:19 24 4
gpt4 key购买 nike

我正在使用 Xamarin.iOS 开发一个 iOS 应用程序(仅代码,没有 Storyboard),我想知道当我从导航 Controller 弹出时将数据发送回原始 uiviewcontroller 的最佳方法是什么。

在 android 中,我使用 StartActivityForResult,然后覆盖 OnResult,但我找不到适用于 iOS 的类似方法。

我知道有 ViewDidLoad、ViewDidAppear 等的覆盖,我正在寻找的是某种 ViewDidGetPoppedBackTo(希望你明白)。

或者还有其他更好的方法来实现这一目标吗?

最佳答案

NavigationController 以数组形式跟踪所有 ViewController:NavigationController.ViewControllers

您可以通过以下代码从此数组中获取 ViewController 类型的现有实例:(如果你有这个方法,你可以把它写在 BaseViewController 中。)

public T InstanceFromNavigationStack<T> () where T : UIViewController
{
return (T)NavigationController.ViewControllers.FirstOrDefault(v => v is T);
}

然后像这样使用它:

var myVCInstance = InstanceFromNavigationStack<MyTargetViewController>();
if(myVCInstance != null)
{
//Assign a value like
myVCInstance.MyVariable = "MyValue";

//Or call a method like
myVCInstance.MethodToReloadView("MyValue")
}
//Go Back Navigation Code
//Then here write your navigation logic to go back.

这不仅有助于传递 Previous ViewController 中的数据,还有助于传递堆栈中的任何 ViewController。只需传递它的类型即可从 Stack 获取实例。

注意:如果您的导航堆栈没有相同 ViewController 类型的多个实例,这应该有效。

关于ios - 在弹出时将数据传回 uiviewcontroller (NavigationController.PopViewController),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47407724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com