草庐IT

swift - 使用 SwiftUI 转到新 View

我有一个使用SwiftUI的带有按钮的基本View,我正尝试在点击该按钮时显示一个新的屏幕/View。我该怎么做呢?我是否应该为此View创建一个委托(delegate),告诉应用的SceneDelegate呈现一个新的ViewController?importSwiftUIstructContentView:View{varbody:someView{VStack{Text("HelloWorld")Button(action:{//gotoanotherview}){Text("DoSomething").font(.largeTitle).fontWeight(.ultraLig

ios - 测试 SwiftUI 正文 View 和属性

我正在研究如何对SwiftUIView代码进行单元测试。我有以下定义:structContentView:View{varbody:someView{Text("HelloWorld").font(.title).fontWeight(.bold)}}我可以这样测试它:functestBody(){letcv=ContentView()letbody=cv.bodyXCTAssertNotNil(body)guardlettext=bodyas?Textelse{XCTFail();return}XCTAssertEqual(Text("HelloWorld").font(.title

swift - 从现有的 SwiftUI @States 派生绑定(bind)

我一直在研究SwiftUI和Combine,感觉可能有一种方法可以在View中获取现有的@State属性并创建一个新属性。例如,我有一个密码创建View,其中包含用户的密码和passwordConfirm字段。我想获取这两个@State属性并派生一个新的@State,我可以在我的View中使用它来断言输入是否有效。因此,为简单起见:不空且不相等。Apple文档说thereisapublisher在绑定(bind)上,尽管我似乎无法理解它。这是一些无法运行的伪代码:importSwiftUIimportCombinestructCreatePasswordView:View{@State

ios - SwiftUI 从 var body 调用 mutating func

在我关注的Ray教程中,我设置了以下属性structContentView:View{varrTarget=Double.random(in:0..这些当然是不可变的,所以我不能从func修改它们,除非我将func标记为mutatingfuncreset(){rTarget=Double.random(in:0..无法分配给属性:'self'是不可变的但是我从varbody调用了这个函数mutatingfuncreset(){rTarget=Double.random(in:0..Alert{returnAlert(title:Text("YourScore"),message:Tex

swift - 如果在 SwiftUI 中使用 NavigationView,如何更改背景颜色?

我想更改全屏背景颜色。我正在使用NavigationView,我想为背景设置灰色(不是默认的白色)structContentView:View{varbody:someView{NavigationView{ScrollView{Text("Example")}.navigationBarTitle("titl")}}}设置.background(Color.red)在任何地方都不起作用。preview 最佳答案 如果您只是将您的内容嵌入到ZStack中的NavigationView中,您应该能够在主要内容下方添加颜色。struct

ios - SwiftUI:状态栏颜色

有没有办法将SwiftUIView的状态栏更改为白色?我可能遗漏了一些简单的东西,但我似乎找不到在SwiftUI中将状态栏更改为白色的方法。到目前为止,我只看到.statusBar(hidden:Bool)。 最佳答案 可以通过设置View的.dark或.light模式将状态栏文本/色调/前景色设置为白色使用.preferredColorScheme(_colorScheme:ColorScheme?)的配色方案。层次结构中第一个使用此方法的View将优先。例如:varbody:someView{ZStack{...}.prefer

xcode - 无法让自定义类在 SpriteKit 场景中工作(swiftui 和 xcode beta)

我不确定这是否是一个错误,但即使我在其中一个Sprite上设置了自定义类名称,它似乎也被完全忽略了。我尝试使用一个拖动的Assets,然后使用一个空节点,两者都完全忽略了Monkey类关联,只创建了一个原始的SKSpriteNode。猴子节点代码如下。importFoundationimportSpriteKitclassMonkey:SKSpriteNode{letmonkeyWalkAtlas=SKTextureAtlas(named:"MonkeyWalk")overrideinit(texture:SKTexture?,color:NSColor,size:CGSize){su

ios - SwiftUI:将多个 BindableObjects 放入环境

在SwiftUI中,可以使用View对象的environmentObject方法将单个BindableObject放入环境中。如果我想同时将多个BindableObjects放入环境中怎么办?我在SwiftUI文档中没有看到任何解决方案。我不想在构造函数中传递对象。 最佳答案 对environmentObject()的调用返回一个(修改后的)View,因此您可以链接调用以将多个对象放入环境中。示例:letrootView=ContentView().environmentObject(firstBindable).environme

ios - 如何使用 SwiftUI 获得动态 View 列表

我可以像这样做一个静态列表List{View1()View2()}但是我如何从一个数组中创建一个动态的元素列表呢?我尝试了以下但出现错误:包含控制流语句的闭包不能与函数构建器“ViewBuilder”一起使用letelements:[Any]=[View1.self,View2.self]List{ForEach(0..有什么解决办法吗?我想要完成的是一个包含动态元素集的列表,这些元素不是静态输入的。 最佳答案 看起来答案与将我的View包装在AnyView中有关structContentView:View{varmyTypes:[

swift - 在 SwiftUI 中,控制事件在哪里,即 scrollViewDidScroll 检测列表数据的底部

在SwiftUI中,有谁知道控制事件(例如scrollViewDidScroll)在哪里以检测用户何时到达列表底部导致事件检索其他数据block?或者有没有新的方法来做到这一点?似乎UIRefreshControl()也不存在...... 最佳答案 SwiftUI缺少​​许多功能-目前似乎不可能。但这里有一个解决方法。TL;DRskipdirectlyatthebottomoftheanswer在比较ScrollView和List时的一个有趣发现:structContentView:View{varbody:someView{Scr