- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想避免将我的 OnBoarding
View 放在导航堆栈中,以解决按下后退按钮的问题。在我的 MainPage
中,我检查 OnBoarding
是否应该出现。如果为真,我将在 OnAppearing
方法中调用 PushModalAsync
方法。但是应用程序崩溃并出现以下异常:
Objective-C exception thrown. Name: System.InvalidOperationException Reason: Window should have a UIWindow set. (System.InvalidOperationException)
at Microsoft.Maui.Controls.Window.get_NativeWindow()
at Microsoft.Maui.Controls.Platform.ModalNavigationManager.EndEditing()
at Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Page modal, Boolean animated)
at Microsoft.Maui.Controls.Window.NavigationImpl.OnPushModal(Page modal, Boolean animated)
at BytePesaApp.MainPage.OnAppearing() in MainPage.xaml.cs:line 18
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
at Foundation.NSAsyncSynchronizationContextDispatcher.Apply()
代码实现如下:
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
protected override async void OnAppearing()
{
base.OnAppearing();
if (ShouldShowOnBoardingPage() == true)
{
await Navigation.PushModalAsync(new OnBoardingPage(), false);
}
}
private bool ShouldShowOnBoardingPage()
{
return VersionTracking.IsFirstLaunchEver;
}
}
最佳答案
在 OnAppearing 完成之前,Maui 似乎不适合导航。像这样推迟导航:
Dispatcher.Dispatch(async() =>
await Navigation.PushModalAsync(new OnBoardingPage(), false);
);
此代码将被排队,并将在 OnAppearing 返回后运行。
替代方案是在入职期间替换主页。
在 App.xaml.cs 中:
if (ShouldShowOnBoardingPage() == true)
MainPage = new OnBoardingPage();
else
MainPage = new MainPage();
然后当 OnBoarding 完成时:
Application.Current.MainPage = new MainPage();
如果可能的话,我更喜欢后一种方法。
关于navigation - 如何在 OnAppearing() 方法中导航?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72373278/
我注意到 ListView 的 OnAppear 事件有一些奇怪的行为。我认为 OnAppear 闭包会在屏幕上出现 View 时运行,但它似乎在加载列表时立即运行。 例如下面的代码: @State
我正在学习从头开始为 iOS 开发应用程序。我选择了 SwiftUI 来制作一个获取用户位置的应用程序,通过地理编码获取他所在的城市,并根据获得的信息,从 API 显示属于该城市的项目列表。 因此,我
我想避免将我的 OnBoarding View 放在导航堆栈中,以解决按下后退按钮的问题。在我的 MainPage 中,我检查 OnBoarding 是否应该出现。如果为真,我将在 OnAppeari
在 SwiftUI应用程序我有这样的代码: var body: some View { VStack { Spacer() ........ }
作为 Xamarin 表单和 MVVM 的初学者,我面临着问题。我有 tabbedpage 和 2 个页面在 tag 下。这是代码。 问题是本地的:ActiveOrderViewPage 页面 OnA
我有一个标签页 Xamarin 表单应用程序,我正在尝试自定义该应用程序。我正在从仅 IO 的应用程序迁移到所有平台。在 iOS 中,我使用了几个函数 ViewDidDisappear()、ViewD
我正在尝试在 HStack 和 VStack 中使用 forEach。我在其中使用文本,运行时文本不会出现,而是 onAppear 打印值。请看一下我的代码。为什么没有出现文本?我怎样才能做到这一点?
我正在尝试让新的 iOS 15.0 .focused() View Modifier 在 SwiftUI View 出现时执行: import SwiftUI struct MainView: Vie
如果我有这个代码: protected override async void OnAppearing() { base.OnAppearing();
我第一次限制 onAppearing()选项卡式页面的所有子页面中的方法。我需要调用onAppearing()当我更改标签时。为此,我使用 OnCurrentPageChanged()调用onAppe
在导航链接内时,SwiftUI onAppear 被多次调用。在我提供的示例中,它被调用了 5 次。这也会触发它的 StateObject 初始值设定项也被调用 5 次。如果您注释掉导航链接,它会按预
我最近看到了这个关于如何将应用程序 OnStart 变成异步 OnStart 的建议: protected override void OnStart() { this
我很难理解为什么在 .onAppear 期间 @Published EnvironmentObject 变量发生更改时 PageViewController 无法按预期工作在其父 View 中。 如果
我正在做一个简单的倒计时。我期望发生的是First计入 0 ,然后 Second计入 0 .当语句切换到 else block 时,HStack 文本在 Canvas 中消失。为什么会发生这种情况?
据我了解,onAppear 是在模式出现在屏幕上时调用处理程序。 但是,当我运行时: paste(Pattern("123.png").targetOffset(-1,37),"testText")
这是我想出的代码。它似乎有效,但我担心这可能不是做我想做的事情的好方法。我需要的是在 OnAppearing 发生后每分钟运行一个方法,并在 OnDisappearing() 时停止; protect
ON外观不会触发。我意识到,当我关闭全屏封面时,onAppar并没有触发。
ON外观不会触发。我意识到,当我关闭全屏封面时,onAppar并没有触发。
ON外观不会触发。我意识到,当我关闭全屏封面时,onAppar并没有触发。
我使用以下方法设置当前页面的页码: protected override void OnAppearing() { base.OnAppearing(); // Page number
我是一名优秀的程序员,十分优秀!