我正在使用SwiftUI与Xcode-beta 4.
我想创建动态按钮ForEach。我正在使用这些代码行:
struct Result {
var id = UUID()
var score: Int
}
struct ContentView : View {
let results = [Result(score: 8), Result(score: 5), Result(score: 10)]
var body: some View {
VStack {
ForEach(results.identified(by: \.id)) { result in
Button(action: {
print(result.score)
}){
Text(result.score)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但Xcode无法编译这个。
当我更改Text(result.score)为Text("test")按钮样式时,现在 Xcode 可以编译它
Xcode 控制台有一个“调试器输出”过滤器。我知道这是与 一起使用的lldb,并且您可以使用断点将消息打印到此输出。我的问题不是如何做到这一点。
我的问题是:Xcode本身用于将lldb消息写入调试器输出(而不是目标输出)的底层机制是什么?stdout有没有类似或者stderr写在这里的变量?是否可以从 Xcode 目标代码 (Swift/Obj-C/C) 写入此输出?
我知道我们可以在SwiftUI中同时打开不同屏幕的多个预览。谁能帮助我实现这一目标的步骤。
我了解有PresentationButton和NavigationButton以便在最新的SwiftUI中更改视图。但是我想做一个简单的操作,如下所示。如果凭据正确,则用户单击“登录”按钮时,它将登录它们,但也会进行登录(在这种情况下,请更改视图)。但是,我无法在PresentationButton中检查它们是否正确,也无法在普通按钮中更改视图。还有另一种方法吗?
@IBAction func signInClicked(_ sender: Any) {
if emailText.text != "" && passwordText.text != "" {
Auth.auth().signIn(withEmail: emailText.text!, password: passwordText.text!) { (userdata, error) in
if error != nil {
//error
} else {
performSegue(withIdentifier: "toFeedActivity", sender: nil)
}
}
} else {
//error
}
}
Run Code Online (Sandbox Code Playgroud) Xcode11 beta5中swiftUI的Path.fill和.stroke不起作用
下面的代码在Xcode beta4中工作正常,但在Xcode beta5中崩溃,我得到的所有错误信息都是:线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)
代码:
import SwiftUI
struct ContentView: View {
var body: some View {
Path{path in
path.addRect(CGRect(x: 20, y: 20, width: 300, height: 200))
}.fill(Color.red)
}
}
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
Run Code Online (Sandbox Code Playgroud) 如果我添加EnviromentObject属性包装器,则Xcode预览不起作用。每次我添加一个Canvas都不会建立,并且出现此错误:
无法在此文件中预览-[App Name] .app可能已崩溃
如果我替换EnviromentObject属性包装器ObservedObject并对其进行初始化,则一切正常。
这是我的代码:
class NetworkManager: ObservableObject {
}
struct ContentView : View {
@EnvironmentObject var networkManager: NetworkManager
var body: some View {
Text("Canvas not working")
}
}
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environmentObject(NetworkManager())
}
}
#endif
Run Code Online (Sandbox Code Playgroud)
更新:
当我使用绑定时,它也不会加载预览:
class NetworkManager: ObservableObject {
}
struct ContentView : View {
@EnvironmentObject var networkManager: NetworkManager
var body: some View {
Text("Canvas not working")
}
}
#if DEBUG …Run Code Online (Sandbox Code Playgroud) 错误信息:
无法推断通用参数“ ID”
ForEach(0...self.workoutsViewModel.workoutRoutine[self.workoutIndex].routine[0].exercises.count - 1) { x in
Text("\\(x)")
}
Run Code Online (Sandbox Code Playgroud) 我正在实现BackgroundTasks框架来更新数据。但是我遇到了以下问题
Could not schedule refreshApp: Error Domain=BGTaskSchedulerErrorDomain Code=1 "(null)"
Could not schedule data featch: Error Domain=BGTaskSchedulerErrorDomain Code=1 "(null)"
2019-10-01 19:19:32.550320+0530 SOBackgroundTask[34131:1129470] Can't end BackgroundTask: no background task exists with identifier 3 (0x3), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug.
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下代码将视图背景色设置为黑色
struct RuleList: View {[![enter image description here][1]][1]
private var presenter: ConfigurationPresenter?
@ObservedObject
private var viewModel: RowListViewModel
init(presenter: ConfigurationPresenter?, viewModel: RowListViewModel) {
self.presenter = presenter
self.viewModel = viewModel
}
var body: some View {
List(viewModel.configurations) { configuration in
RuleListRow(website: configuration.website).background(Color.black)
}.background(Color.black)
}
}
struct RuleListRow: View {
var website: Website
@State private var websiteState = 0
var body: some View {
VStack {
Text(website.id).foregroundColor(.white)
Picker(website.id, selection: $websiteState) {
Text("Permis").tag(0)
Text("Ascuns").tag(1)
Text("Blocat").tag(2)
}.pickerStyle(SegmentedPickerStyle()).background(Color.crimson)
}.listRowBackground(Color.green)
}
}
Run Code Online (Sandbox Code Playgroud)
该视图托管在混合UIKit-SwiftUI故事板中,因此此特定视图嵌入在Hosting控制器中
class ConfigurationHostingController: UIHostingController<RuleList> { …Run Code Online (Sandbox Code Playgroud)