在Xamarin iOS设计器中,如何防止代码在ViewDidLoad中运行
本文关键字:何防止 代码 ViewDidLoad 运行 Xamarin iOS | 更新日期: 2023-09-27 18:21:49
在Xamarin iOS Storyboard设计器中,ViewController的ViewDidLoad代码会在查看故事板时自动生成并运行。这对于编程设计元素非常好,因为我可以在设计器视图中看到它们,而无需启动模拟器,但我还需要从ViewDidLoad调用API,这会使设计器崩溃,并返回错误"由于检测到问题,自定义组件未被呈现"。
public async override void ViewDidLoad()
{
base.ViewDidLoad();
AddWhiteGradient();
AddGreenGradient();
await CallApi();
}
在本例中,我喜欢设计器调用AddWhiteGradient()和AddGreenGradient(。
是否有程序检查来查看我是否在设计器视图中?
类似两者之一:
if (!IsInDesignerView) {
await CallApi();
}
或
#if !DESIGNER
await CallApi();
#endif
我创建了一个有效的破解,所以我不会将其标记为答案,因为这不是Xamarin已经或将要提供的方式,但这目前可以完成任务。
Studio情节提要设计器不调用AppDelegate事件,因此您可以利用它来创建检查。
AppDelegate.cs
public partial class AppDelegate: UIApplicationDelegate
{
public static bool IsInDesignerView = true;
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
IsInDesignerView = false;
return true;
}
}
ViewController
public async override ViewDidLoad()
{
base.ViewDidLoad();
if (!AppDelegate.IsInDesignerView)
{
await CallApi();
}
}