我试图重现一个像tabBar
这样的“Instagram”,它在中间有一个“实用程序”按钮,不一定属于tabBar
生态系统。
我附上了这个GIF来显示我追求的行为。描述问题。中间的选项卡栏(黑色加号)是单击ActionSheet,而不是切换视图。
我在UIKit中如何做到这一点是简单地使用
override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
print("Selected item")
}
UITabBarDelegate
的函数。但显然我们不能在SwiftUI中做到这一点,所以我们想看看人们是否尝试过任何想法。我最后的想法是简单地将其 Package 在UIView中并与SwiftUI一起使用,但希望避免这种情况并保持其原生。
我已经看到一个写在一个自定义标签栏,但想使用苹果提供的标签栏,以避免任何未来的差异。
谢谢!
编辑:让问题更清晰。
4条答案
按热度按时间twh00eeo1#
感谢Aleskey提供的精彩答案(标记为正确)。除了一篇围绕Modal编写的medium文章之外,我还对它进行了一些改进。我发现有点不一样
这是笑话。
MainTabBarData是一个可观察对象
这是TabbedView
类似的概念,只是使用了SwiftUI和合并的功能。
0s7z1bwu2#
您可以引入新的
@State
属性来存储当前选项卡的旧标签。然后对除中间选项卡以外的每个选项卡.onAppear { self.oldSelectedItem = self.selectedItem }
执行下一个方法。中间的选项卡将负责显示操作表,其方法如下所示:工作示例:
7d7tgy0s3#
以前的答案没有帮助我,所以我粘贴我的完整的解决方案。
omhiaaxx4#
只要用
Button
或任何你想要的视图做一个ZStack
...确保按钮大于中间的空tabItem