草庐IT

swiftui-navigationlink

全部标签

ios - 在 SwiftUI NavigationView 中呈现 UINavigationBar 的旧小标题

到现在为止,UINavigationItem的默认displayMode是小标题,在SwiftUI中它更改为默认大标题。是否可以使用旧的小标题样式? 最佳答案 可以通过将displayMode:.inline属性传递给navigationBarTitle()NavigationView{List{Text("Text")}.navigationBarTitle(Text("Title"),displayMode:.inline)} 关于ios-在SwiftUINavigationView

ios - 使用 SwiftUI 展平 TupleView

好的,SwiftUI本周发布了,所以我们都是菜鸟,但是...我有以下测试代码:varbody:someView{switchshape{case.oneCircle:returnZStack{Circle().fill(Color.red)}case.twoCircles:returnZStack{Circle().fill(Color.green)Circle().fill(Color.blue)}}}产生以下错误:函数声明了一个不透明的返回类型,但其主体中的返回语句没有匹配的底层类型发生这种情况是因为第一个ZStack是这种类型:ZStack>第二个是这种类型:ZStack,Sha

swift - 我如何知道 SwiftUI 按钮是否启用/禁用?

SwiftUI按钮没有isEnabled属性。我如何判断它是否已启用?在常规的UIKit中,我会简单地做ifbutton.isEnabeld==true{}else{}但没有SwiftUI等价物。 最佳答案 在一个View中,如果你想对.disabled(true)设置的状态使用react,你可以使用:@Environment(\.isEnabled)varisEnabled由于环境可以在View或ViewModifier中使用,因此它可以用于根据从外部设置的状态更改View的布局属性。不幸的是,ButtonStyle不能直接使用@

ios - SwiftUI 列表数据的可识别协议(protocol)扩展

我正在试验SwiftUI,在为我的一个列表实现数据模型时遇到了一个问题。我的计划是创建一个协议(protocol)CardProtocol作为我列表元素的数据协议(protocol),然后有一个CoreData协议(protocol)实现以及一个用于单元测试和Canvas使用的虚拟协议(protocol)。如果您在SwiftUIList中使用数据集合,则单个元素需要符合Identifiable协议(protocol)。代码如下所示:importSwiftUIimportCombinefinalclassCardsModel:BindableObject{varcards:[CardPr

swift - 如何在 SwiftUI 中使用计时器更新文本

我现在看到了文本,我想每秒使用警报更新该文本。这是我完成的代码。structCountDownView:View{varbody:someView{VStack{Text("Updatetextwithtimer").lineLimit(nil).padding(20)}.navigationBarTitle(Text("WWDC"),displayMode:.automatic)}} 最佳答案 使用合并:structCurrentDateView:View{@Statevarnow=Date()lettimer=Timer.pub

swift - 在主(ContentView)SwiftUI View 中将 MKMapView 元素作为 UIViewRepresentable 访问

我正在使用SwiftUI显示map,如果用户点击注释,它会在VStack中弹出一个详细View。我制作了mapView并在另一个SwiftUI文件中插入了注释。我还制作了详细View。我如何访问主视图文件中该map的注释,以定义一个.tapaction供他们将其用于详细View?我尝试将View定义为MKMapView,但无法为另一个SwiftUIView中的UIViewRepresentable执行此操作。主视图(ContentView)代码为:structContentView:View{@Stateprivatevarchosen=falsevarbody:someView{VS

ios - 在 SwiftUI 中使用 SpriteKit

我在SwiftUI中创建SpriteKit场景时遇到问题。我最初将此项目创建为SwiftUI项目。这是我目前的代码:ContentView.swift:///WheretheUIcontentfromSwiftUIoriginatesfrom.structContentView:View{varbody:someView{//SceneSceneView().edgesIgnoringSafeArea(.all)}}场景View.swift:///CreatesanSKViewtocontaintheGameScene.ThisconformstoUIViewRepresentable

swift - 在 SwiftUI 中拥抱 subview

DaveAbrahams在他关于自定义View的WWDC19演讲中解释了SwiftUI布局的一些机制,但他遗漏了一些内容,我无法正确调整View大小。有没有办法让View告诉它的容器它没有任何空间需求,但它会使用它所提供的所有空间?另一种说法是容器应该拥抱它的subview。具体的例子,我想要像c这样的东西:如果你有一些Text在VStack里面就像在a)中一样,VStack将采用它的宽度到最宽的subview。如果你添加一个Rectangle尽管与b)中一样,它会尽可能地扩展,直到VStack。填充它的容器。这表明Texts和Rectangle在布局方面,s属于不同的类别,Text具

SwiftUI:单击按钮时如何呈现 View ?

我正在尝试使用Apple的SwiftUI制作一个应用程序,我需要有两个按钮在单个List中呈现两个不同的View。行。我使用Xcodebeta7和MacOSCatalinabeta7。我试过添加Button显示View但是,当我尝试使用简单的Button时,我无法单击它外面List然后点击它,AddList()View没有出现。我也试过添加navigationButton里面navigationButton但它也没有用。添加tapAction当你点击它时也不起作用,View仍然没有出现NavigationView{List(0..我希望AddList()View出现,但在这两种情况下,

具有自定义初始化的 SwiftUI View

假设我正在制作一个如下所示的自定义输入元素:structCustomInput:View{@Bindingvartext:Stringvarname:Stringvarbody:someView{TextField(name,text:$text).modifier(InputModifier())}}目前,当我实例化此View时,我需要将text和name名称传递给参数。我希望能够使name参数可选,如下例所示。CustomInput("Somename",$text)通常我会为此使用init方法。但我不确定如何在init函数中处理像@Binding这样的属性包装器。关于如何实现这一