Xamarin iOS - 完全关闭 ViewController 实例
Xamarin iOS - Close ViewController instance completely
我正在尝试完全关闭视图控制器实例。
情况是用户将 select 页面上的一个值,然后将被带回主页,其中数据根据 selection 更新。
当在 selection 页面上选择一个值时,我调用
var vc = new viewController()
{
ModalPresentationStyle = UIModalPresentationStyle.FullScreen
}
PresentViewController(vc,true,null)
所以我正在创建 viewController 的新实例,以便可以显示更新的数据。
那么我该如何彻底摆脱之前的 viewController 呢?
还需要注意的一件事是 viewDidLoad() 被调用的次数与实例数相同。当这达到大约 4-5 个实例时,应用程序开始变得非常慢。所以这是我希望能够关闭实例的主要原因,这样我就不会重复调用。
我知道这对某些人来说似乎是一个相对简单的问题,但我对 Xamarin 比较陌生 iOS。
提前致谢。
有很多办法可以解决。
例如,您可以将vc
设置为页面的属性,使其成为页面中的单例。并在展示之前进行讨论。
viewController vc;
if(vc!=null)
{
vc.DismissViewController(false,null);
}
vc = new viewController ()
{
ModalPresentationStyle = UIModalPresentationStyle.FullScreen
};
PresentViewController(vc, true, null);
更新
如果你Present
一个viewController在另一个viewController,你可以在打开新页面之前讨论自己。
在viewController
public bool IsPresent { get; set; }
vc = new viewController()
{
ModalPresentationStyle = UIModalPresentationStyle.FullScreen,
IsPresent = true,
};
if(IsPresent)
{
DismissViewController(false, () =>
{
PresentViewController(vc, true, null);
});
}
else
{
PresentViewController(vc, true, null);
}
我正在尝试完全关闭视图控制器实例。 情况是用户将 select 页面上的一个值,然后将被带回主页,其中数据根据 selection 更新。 当在 selection 页面上选择一个值时,我调用
var vc = new viewController()
{
ModalPresentationStyle = UIModalPresentationStyle.FullScreen
}
PresentViewController(vc,true,null)
所以我正在创建 viewController 的新实例,以便可以显示更新的数据。 那么我该如何彻底摆脱之前的 viewController 呢?
还需要注意的一件事是 viewDidLoad() 被调用的次数与实例数相同。当这达到大约 4-5 个实例时,应用程序开始变得非常慢。所以这是我希望能够关闭实例的主要原因,这样我就不会重复调用。
我知道这对某些人来说似乎是一个相对简单的问题,但我对 Xamarin 比较陌生 iOS。
提前致谢。
有很多办法可以解决。
例如,您可以将vc
设置为页面的属性,使其成为页面中的单例。并在展示之前进行讨论。
viewController vc;
if(vc!=null)
{
vc.DismissViewController(false,null);
}
vc = new viewController ()
{
ModalPresentationStyle = UIModalPresentationStyle.FullScreen
};
PresentViewController(vc, true, null);
更新
如果你Present
一个viewController在另一个viewController,你可以在打开新页面之前讨论自己。
在viewController
public bool IsPresent { get; set; }
vc = new viewController()
{
ModalPresentationStyle = UIModalPresentationStyle.FullScreen,
IsPresent = true,
};
if(IsPresent)
{
DismissViewController(false, () =>
{
PresentViewController(vc, true, null);
});
}
else
{
PresentViewController(vc, true, null);
}