gpt4 book ai didi

c# - 在 Xamarin iOS 设计器中,如何防止代码在 ViewDidLoad 中运行?

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:45 24 4
gpt4 key购买 nike

在 Xamarin iOS Storyboard设计器中,ViewController 的 ViewDidLoad 代码会在查看 Storyboard时自动构建和运行。这对于编程设计元素非常有用,因为我可以在设计器 View 中看到它们而无需启动模拟器,但我还需要从 ViewDidLoad 进行 API 调用,这会使设计器崩溃并出现错误 “自定义组件未被因为检测到问题而呈现”

public async override void ViewDidLoad()
{
base.ViewDidLoad();

AddWhiteGradient();
AddGreenGradient();

await CallApi();
}

在这个例子中,我喜欢设计师调用 AddWhiteGradient()AddGreenGradient() 函数,因为我可以在 Storyboard 中看到结果,但是 await CallApi() 使设计器崩溃。

是否有程序检查我是否在设计器 View 中?

类似的东西:

if (!IsInDesignerView) {
await CallApi();
}

#if !DESIGNER
await CallApi();
#endif

最佳答案

我创建了一个有效的 hack,所以我不会将其标记为答案,因为这不是 Xamarin 已经提供或将提供的方式,但现在可以完成这项工作。

Studio Storyboard 设计器不会调用 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;
}
}

View Controller

public async override ViewDidLoad()
{
base.ViewDidLoad();

if (!AppDelegate.IsInDesignerView)
{
await CallApi();
}
}

关于c# - 在 Xamarin iOS 设计器中,如何防止代码在 ViewDidLoad 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25825424/

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