fatbobman / blogComments

1 stars 0 forks source link

在 SwiftUI 中创建自适应的程序化导航方案 | 肘子的Swift记事本 #174

Open fatbobman opened 1 year ago

fatbobman commented 1 year ago

https://www.fatbobman.com/posts/adaptive-navigation-scheme/?

随着苹果对 iPadOS 的不断投入,越来越多的开发者都希望自己的应用能够在 iPad 中有更好的表现。尤其当用户开启了台前调度( Stage Manager )功能后,应用对不同视觉大小模式的兼容能力就越发显得重要。本文将就如何创建可自适应不同尺寸模式的程序化导航方案这一内容进行探讨。

xiaogdgenuine commented 1 year ago

今天想试试第三个方案的时候又发现 SwiftUI 的 bug 了,NavigationSplitView 不能放在 TabView 里边,不然会把 TabView 的 Tab 重复显示,行为极其怪异。似乎苹果认为 TabView 和 NavigationSplitView 都应该是顶级导航容器,一山不能容二虎。

fatbobman commented 1 year ago

今天想试试第三个方案的时候又发现 SwiftUI 的 bug 了,NavigationSplitView 不能放在 TabView 里边,不然会把 TabView 的 Tab 重复显示,行为极其怪异。似乎苹果认为 TabView 和 NavigationSplitView 都应该是顶级导航容器,一山不能容二虎。

image

我目前正在使用 TabView + NavigationSplitView

xiaogdgenuine commented 1 year ago

@fatbobman

今天想试试第三个方案的时候又发现 SwiftUI 的 bug 了,NavigationSplitView 不能放在 TabView 里边,不然会把 TabView 的 Tab 重复显示,行为极其怪异。似乎苹果认为 TabView 和 NavigationSplitView 都应该是顶级导航容器,一山不能容二虎。

image

我目前正在使用 TabView + NavigationSplitView

今天重新试了下发现是因为我 .tabItem 修饰符附加到了老的错误 View 上,这种情况应该直接加到 NavigationSplitView 上的,低级错误 orz... 感谢肘子哥分享的这篇,很有用,请你喝杯茶~

fatbobman commented 1 year ago

谢谢

Lagrange1813 commented 1 year ago

@xiaogdgenuine 今天想试试第三个方案的时候又发现 SwiftUI 的 bug 了,NavigationSplitView 不能放在 TabView 里边,不然会把 TabView 的 Tab 重复显示,行为极其怪异。似乎苹果认为 TabView 和 NavigationSplitView 都应该是顶级导航容器,一山不能容二虎。

参考 Apple 关于 Container View Controller 的文档,应该是 Apple 认为容器视图控制器有个层次区别,只允许 UISplitViewController 嵌套在 UITabBarController 中使用,而不能反过来,SwiftUI 也是类似,只能把 NavigationSplitView 嵌套在 TabView 中。