小编mal*_*low的帖子

swiftui 中的 textarea 相当于什么?

SwiftUI 中的 textarea 相当于什么?我可以在其中输入多行文本。并指定该区域的大小?HTML 示例在这里: https: //www.w3schools.com/tags/tryit.asp ?filename=tryhtml_textarea 我已经搜索了很多,但没有任何运气。

我尝试在 SwiftUI 中使用 TextField,但如果用户编写长文本,文本就会超出屏幕。

TextField("notes")
.background(Color.yellow)
.lineLimit(3)
Run Code Online (Sandbox Code Playgroud)

swiftui

13
推荐指数
1
解决办法
9906
查看次数

点击 NavigationLink 后如何执行操作?

我的第一个视图中有一个加号按钮。看起来像一个 FAB 按钮。我想在点击包含在 NavigationLink 中的某个步骤后隐藏它。到目前为止,我有这样的事情:

ForEach(0 ..< 12) {item in
    NavigationLink(destination: TransactionsDetailsView()) {
        VStack {
            HStack(alignment: .top) {
                Text("List item")
            }
            .padding(EdgeInsets(top: 5, leading: 10, bottom: 5, trailing: 10))
            .foregroundColor(.black)
            Divider()
        }
    }
    .simultaneousGesture(TapGesture().onEnded{
        self.showPlusButton = false
    })
        .onAppear(){
            self.showPlusButton = true
    }
}
Run Code Online (Sandbox Code Playgroud)

单击即可正常工作。但是当我长按 NavigationLink 时它不起作用。我应该如何重写我的代码以包括长按?或者我应该让它的工作方式与使用 concurrentGesture 不同?

swiftui

13
推荐指数
2
解决办法
5269
查看次数

SwiftUI 实时预览中的可变绑定

我有一个带有变量的 ChildView:

@Binding var itemName: String
Run Code Online (Sandbox Code Playgroud)

在这个 ChildView 中,我有几个按钮可以改变变量的值:

Button(action: {
    self.itemName = "different value"
})
Run Code Online (Sandbox Code Playgroud)

我试图像这样使用预览:

struct ChildView_Previews: PreviewProvider {
    static var previews: some View {
        ChildView(itemName: "test")
    }
}
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

无法将“字符串”类型的值转换为预期的参数类型“绑定”

我知道我可以像下面这样使用预览。并且错误将消失并且预览将起作用,但是... itemName 将具有恒定值,它现在不可变,在实时预览中不可交互:

struct ChildView_Previews: PreviewProvider {
    static var previews: some View {
        ChildView(itemName: .constant("test"))
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在 SwiftUI Preview 中声明绑定以使其具有交互性?

xcode swift swiftui

12
推荐指数
2
解决办法
1597
查看次数

如何在 SwiftUI 中更改分隔线的宽度?

在我的 SwiftUI 应用程序的几个屏幕上,我在几个元素之间使用 Divider()。此分隔线呈现为非常细的灰色(或黑色?)线。我猜1分。如何更改 Divider() 的宽度?

swiftui

10
推荐指数
5
解决办法
1万
查看次数

Xcode 和 SwiftUI - 如何重置 Canvas?

问题: 如何重置 Xcode 的预览画布?具体来说,如何删除在Canvas实时预览中创建的所有Canvas核心数据?

示例代码: 这是我用于 Canvas 预览的 SwiftUI 预览代码。

struct ItemView_Previews: PreviewProvider {
    static var previews: some View {
        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        //Test data
        let testItem = Item.init(context: context)
        testItem.name = "Abc"
        return ItemView(filter: false)
            .environment(\.managedObjectContext, context)
    }
}
Run Code Online (Sandbox Code Playgroud)

通过此代码,Canvas 向我显示了 testItem,而且还显示了在实时预览中创建的 Core Data 对象的 item.name。我想删除画布数据以看不到以前创建的对象。

我尝试过的事情: Xcode - 产品 > 清理构建文件夹 Xcode - 编辑器 > 画布 > 刷新画布模拟器 - 设备 > 删除所有内容和设置...

最后一项按模拟器的预期工作。我希望它也能删除 Canvas 数据,但事实并非如此。

--

完整的工作示例:

内容视图.swift

import SwiftUI
import CoreData

struct ContentView: View …
Run Code Online (Sandbox Code Playgroud)

xcode canvas core-data ios swiftui

9
推荐指数
1
解决办法
2915
查看次数

SwiftUI - 具有多项选择的列表(不是自定义列表)

如何在 SwiftUI 中制作多选列表?我知道我可以像这样定制一个: https: //stackoverflow.com/a/57023746/12315994

但是 SwiftUI 中已经有默认的了吗?

以下是 Apple 邮件应用程序中的多选控件示例:

苹果邮件应用程序

当您选择多张照片时,Apple Photos 中也会使用相同的控件。这些控件也位于 Apple 官方 iOS Sketch 库中,您可以从此处下载: https: //developer.apple.com/design/resources/

苹果的提醒应用程序中有非常相似的控件:

苹果提醒应用程序

list multi-select ios swift swiftui

7
推荐指数
1
解决办法
3708
查看次数

如何在 SwiftUI 中使用 ForEach 仅更改一个核心数据项的切换?

如何在没有子视图的列表中只更改一个开关?如果我从 ForEach 中的所有内容中提取 Subview,我知道如何使其工作,但是如何在一个视图上执行此操作?

我不能使用子视图,因为如果我想从这个子视图中删除一个项目,我以后会遇到问题。它给了我一些我不知道如何修复的错误,所以我试图在没有这个错误的一个视图中进行。

该列表的代码非常简单:

import SwiftUI

struct ContentView: View {
    
    @Environment(\.managedObjectContext) var moc
    var fetchRequest: FetchRequest<Item>
    var items: FetchedResults<Item> { fetchRequest.wrappedValue }
    
    @State private var doneStatus : Bool = false
    
    var body: some View {
        
        NavigationView {
            List {
                ForEach(items, id: \.self) {item in
                    HStack {
                        Text("\(item.name ?? "default item name")")
                        
                        Spacer()
                        
                        Toggle(isOn: self.$doneStatus) {
                            Text("Done")
                        }
                        .labelsHidden()
                        .onAppear {
                            self.doneStatus = item.done
                        }
                        .onTapGesture {
                            self.doneStatus.toggle()
                            item.done.toggle()
                            try? self.moc.save()
                        }
                    }
                }
                .onDelete(perform: removeItem)
            } …
Run Code Online (Sandbox Code Playgroud)

foreach core-data toggle swift swiftui

5
推荐指数
1
解决办法
552
查看次数

SwiftUI - 如何制作居中对齐的菜单?

我正在尝试在 iOS 上使用 SwiftUI 制作菜单。

如果打开菜单的按钮是居中对齐的,我希望菜单也能居中对齐。无论按钮中使用的图标或文本如何。怎么做?

奇怪的是菜单的对齐方式根据按钮的内容而变化。如果我使用一个图标,它会按预期居中对齐。但如果我使用另一个图标,它是左对齐的。

在此输入图像描述

这是我的代码:

import SwiftUI

struct ContentView: View {
    
    var body: some View {
        NavigationView {
            ZStack {
                VStack {
                    Text("Some text.")
                }
                
                VStack(alignment: .center) {
                    Spacer()
                    
                    Menu {
                        Button(action: {}) {
                            Label("Menu item", systemImage: "star")
                        }
                        
                        Button(action: {}) {
                            Label("Menu item", systemImage: "star")
                        }
                    } label: {
                        Image(systemName: "plus") // left-aligned menu
                        // Image(systemName: "line.horizontal.3") // center-aligned menu
                            .foregroundColor(Color.white)
                            .padding()
                            .background(Color.accentColor)
                            .clipShape(Rectangle())
                    }
                }
            }
            .navigationTitle("Content")
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static …
Run Code Online (Sandbox Code Playgroud)

menu alignment ios swift swiftui

5
推荐指数
0
解决办法
2019
查看次数

SwiftUI - AppStorage 不适用于 GeometryReader

这是一个简单的例子。您可以创建新的 SwiftUI iOS 项目并将其复制到 ContentView 文件。

import SwiftUI

struct Settings {
    static let onOff = "onOff"
}

struct ContentView: View {
    @AppStorage(wrappedValue: false, Settings.onOff) var onOff
    
    var body: some View {
        NavigationView {
            GeometryReader { reader in // < Comment out this line
                List {
                    Section (header:
                                VStack {
                                    HStack {
                                        Spacer()
                                        VStack {
                                            Text("THIS SHOULD BE FULL-WIDTH")
                                            Text("It is thanks to GeometryReader")
                                        }
                                        Spacer()
                                    }
                                    .padding()
                                    .background(Color.yellow)
                                    
                                    HStack {
                                        Text("This should update from AppStorage: ")
                                        Spacer()
                                        Text(onOff == true …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui geometryreader appstorage

5
推荐指数
1
解决办法
449
查看次数

Xcode、iOS 应用程序 - 如何禁用 iPad 和 Mac 兼容性?

我想在 App Store 上发布我的第一个 iOS 应用程序。我想只做iOS。没有在 iPad 和 Mac 上下载和运行的选项。

\n

然而,TestFlight 在 iPad 和 Mac 上向我展示了这个应用程序。

\n

当我在 Target\xe2\x80\x99s 部署信息中专门禁用 iPad 时,为什么我可以在 iPad 上测试我的 iOS 应用程序?如何禁用它?如何防止应用程序分发到iPad和Mac?

\n

部署信息仅设置为 iPhone。在 App Store Connect 上,我没有添加 macOS 应用程序。然而,它仍然可以在 TestFlight 中使用,并且在兼容性下显示:iPhone、iPad、macOS。

\n

在此输入图像描述

\n

xcode app-store ios testflight

5
推荐指数
2
解决办法
6654
查看次数