小编Ano*_*ude的帖子

从 SwiftUI 小部件点击执行深层链接

我有一个带有两个文本的简单小部件(中等大小),我想要的是能够执行深层链接以将用户引导到我的应用程序的特定部分,但我似乎找不到方法这样做。

我写的视图(非常简单):

HStack {
    Text("FIRST ITEM")    
    Spacer()
    Text("SECOND ITEM")
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试更换

Text("SECOND ITEM")
Run Code Online (Sandbox Code Playgroud)

Link("SECOND ITEM destination: URL(string: myDeeplinkUrl)!)
Run Code Online (Sandbox Code Playgroud)

但它也不起作用。

widget ios swift widgetkit swiftui

11
推荐指数
2
解决办法
5238
查看次数

UIView.animate() :我是否需要在动画块中对 self 进行弱引用?

经过一些研究,我发现我的应用程序使用了太多的能量,因为UIView整个应用程序中有几个动画,我在完成块中捕获了相关的动画UIViewController,而没有对其进行弱引用。

所以实际上,我改变了这一点:

func animate() {
    UIView.animate(withDuration: 0.3, animations: {
        self.label.alpha = 0.5
    }) { _ in 
        self.animate()
    }
}
Run Code Online (Sandbox Code Playgroud)

进入这个:

func animate() {
    UIView.animate(withDuration: 0.3, animations: {
        self.label.alpha = 0.5
    }) { [weak self] _ in 
        self?.animate()
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我想知道我是否需要对animation块(self.label.alpha = 0.5那个)做同样的事情?

感谢您的帮助

animation uiview ios swift

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

致命错误:索引超出范围:从数组中删除元素时文件 Swift/ContigouslyArrayBuffer.swift

我有一个表单来选择一些用户并为他们分配一个 int 值。

该模型:

class ReadingTime: Identifiable, Hashable {
    var id: Int
    @State var user: User
    @Published var value: Int

    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }
    
    static func == (lhs: ReadingTime, rhs: ReadingTime) -> Bool {
        lhs.id == rhs.id
    }
    
    init(id: Int, user: User, value: Int) {
        self.id = id
        self._user = State(wrappedValue: user)
        self.value = value
    }
}
Run Code Online (Sandbox Code Playgroud)

风景:

@Binding var times: [ReadingTime]
@State var newUser: User?

func didSelect(_ user: User?) {
    if let user = user …
Run Code Online (Sandbox Code Playgroud)

swiftui

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

SwiftUI:函数声明了一个不透明的返回类型,但其主体中的返回语句没有匹配的底层类型

我试图写一个像这样的静态函数:

enum NavigationViewKind {
    case test1(String)
    case test2
}

struct NavigationViewManager {
    static func make<V: View>(_ kind: NavigationViewKind, _ contentView: @escaping () -> V) -> some View {
        switch kind {
        case .test1(let text):
            return NavigationView {
                contentView()
                    .navigationBarTitle(text, displayMode: .inline)
            }
        case .test2:
            return NavigationView {
                contentView()
                    .navigationBarTitle("Initial", displayMode: .large)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

函数声明了一个不透明的返回类型,但其主体中的返回语句没有匹配的底层类型

你能帮我理解和解决这个错误吗?

谢谢

swift swiftui

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

SwiftUI:水平堆叠重叠元素?

我想水平堆叠重叠的元素,如下所示:

在此输入图像描述

这是我尝试过的:

struct StackedElementsView: View {
    let colors: [Color] = [.red, .blue, .purple]
    
    var body: some View {
        HStack {
            ZStack {
                ForEach(0..<colors.count) { i in
                    ZStack(alignment: .leading) {
                        colors[i]
                            .clipShape(Circle())
                            .frame(width: 44, height: 44)
                    }
                    .offset(x: CGFloat(i) * 25)
                }
            }
            .padding(.leading, 24)
            Color.purple
                .frame(width: 100, height: 44)
            Spacer()
        }
        .padding(.vertical, 8)
    }
}

struct StackedElementsView_Previews: PreviewProvider {
    static var previews: some View {
        StackedElementsView()
    }
}
Run Code Online (Sandbox Code Playgroud)

我对此有一个问题,紫色矩形与圆圈重叠,我不知道为什么。

感谢您的帮助

ios swiftui

6
推荐指数
2
解决办法
3432
查看次数

SwiftUI:将背景颜色应用于圆角矩形

我想创建一个带有边框和背景颜色的圆角矩形视图的按钮。

到目前为止我写了这个:

Button(action: {
}, label: {
    Text("TAP ME")
        .foregroundColor(Color.blue)
})
.frame(height: 50)
.frame(maxWidth: .infinity)
.overlay(
    RoundedRectangle(cornerRadius: 50, style: .continuous)
        .strokeBorder(Color.blue, lineWidth: 1)                
)
Run Code Online (Sandbox Code Playgroud)

我试图.background(Color.red)在许多不同的地方添加,但这是我每次得到的:

在此处输入图片说明

在这里做什么?

感谢您的帮助

ios swiftui

6
推荐指数
1
解决办法
1070
查看次数

Swift:iOS 15 之前的任务 {}?

我正在按照教程来了解 SwiftUI,特别是如何在视图出现时调用 API。

我看到了这个:

List(results, id: \.trackId) { item in
    ListRow(item)
}
.task {
    // perform API here
}
Run Code Online (Sandbox Code Playgroud)

但由于我的应用程序面向 iOS 14,我收到此错误:

“task(priority:_:)”仅在 iOS 15.0 或更高版本中可用

那么我能做什么呢?感谢您的帮助

task swift swiftui

5
推荐指数
4
解决办法
2431
查看次数

UITableViewCell:子视图阴影被其他单元格和表视图外部切断?

我有一个单元格垂直间距为 10 像素的设计。我想在这些单元格周围设置阴影(实际上我将这些阴影应用到每个单元格的子视图),但这是我得到的结果:

在此输入图像描述

正如您所看到的,阴影被其他单元格和表视图页眉/页脚切断。

这是我的代码:

视图控制器

final class SCVC: UIViewController {
    @IBOutlet weak var tableView: UITableView! {
        didSet {
            tableView.backgroundColor = .clear
            tableView.separatorStyle = .none
        }
    }

    override func viewDidLoad() {
        tableView.register(UINib(nibName: "ShadowCell", bundle: .main), forCellReuseIdentifier: "ShadowCell")
        view.backgroundColor = .white
    }
}

extension SCVC: UITableViewDataSource, UITableViewDelegate {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 4
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return tableView.dequeueReusableCell(withIdentifier: "ShadowCell", for: indexPath) as! ShadowCell
    }
    
    func tableView(_ …
Run Code Online (Sandbox Code Playgroud)

shadow uitableview ios

4
推荐指数
1
解决办法
1535
查看次数

UICollectionView reloadData 只能工作两次

我有一个UIViewController显示一个UIDocumentPicker选择PDF文件的文件,并包含一个UICollectionView显示它们的文件(每个单元格都包含一个PDFView来执行此操作)。

这是代码:

import MobileCoreServices; import PDFKit; import UIKit

class ViewController: UIViewController {
    var urls: [URL] = []
    @IBOutlet weak var collectionView: UICollectionView!

    @IBAction func pickFile() {
        DispatchQueue.main.async {
            let documentPicker = UIDocumentPickerViewController(documentTypes: [kUTTypePDF as String], in: .import)
            documentPicker.delegate = self
            documentPicker.modalPresentationStyle = .formSheet
            self.present(documentPicker, animated: true, completion: nil)
        }
    }
    
    override func viewDidLoad() {
        collectionView.register(UINib(nibName: PDFCollectionViewCell.identifier, bundle: .main),
                                forCellWithReuseIdentifier: PDFCollectionViewCell.identifier)
    }
    
    init() { super.init(nibName: "ViewController", bundle: .main) }
    required init?(coder: NSCoder) { …
Run Code Online (Sandbox Code Playgroud)

pdfkit ios uicollectionview swift

4
推荐指数
1
解决办法
1357
查看次数

SwiftUI:如何仅在需要时更新从父视图传输的变量?

我想将变量从父视图传递到子视图,但在此子视图中,在文本字段中使用它,但仅在按下“保存”按钮时更新此值。

我试过这个:

父视图

struct ParentView: View {
    @State private var name: String = ""
    
    var body: some View {
        HStack {
            Text("User name: \(name)")
            Spacer()
            NavigationLink(
                destination: ChildView(name: name),
                label: {
                    Text("Update name")
                }
            )
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

子视图

struct ChildView: View {
    @State private var name: String = ""
    @Binding var passedName: String
    
    var body: some View {
        VStack {
            Form {
                TextField("Update name", text: $name)
                Button(action: {
                    passedName = name
                }, label: {
                    Text("SAVE")
                })
            }
        }
    } …
Run Code Online (Sandbox Code Playgroud)

ios swiftui

3
推荐指数
1
解决办法
3292
查看次数

iOS 线程:这是否确保从主线程调用完成?

假设我有一个包含在另一个线程中调用的一些指令的函数,例如后台线程:

func myFunc(_ completion: @escaping (() -> ())) {
    anyActionFromBackgroundThread {
        DispatchQueue.main.async {
            completion()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我在某处调用此函数:

myFunc {
    self.tableView.reloadData() // or any UI action 
}
Run Code Online (Sandbox Code Playgroud)

通过这样做,我确定tableView.reloadData()将从主线程调用此处的 UI 操作吗?还是我需要在完成中添加一个检查?

感谢您的帮助

multithreading grand-central-dispatch ios

2
推荐指数
1
解决办法
500
查看次数

输入“我的错误?” 不符合协议“错误”

我正在努力理解新型ResultSwift 的工作原理。这是我尝试过的:

enum MyError: Error {
    case test
}

typealias MyResult = Result<Data?, MyError?>
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

输入“我的错误?” 不符合协议“错误”

为什么会这样?感谢您的帮助。

swift

1
推荐指数
2
解决办法
1006
查看次数

Swift:是否有一种“优雅”的方式来过滤字典值(它是一个数组)?

这是这个简单的例子:

let i: [String: [Int]] = ["a": [1, 3, 6, 10], 
                          "b": [3, 4, 8, 12]]
Run Code Online (Sandbox Code Playgroud)

我想创建一个新字典,过滤数组以只获取小于 7 的值。我写了这个:

var j: [String: [Int]] {
    var result = [String: [Int]]()
    i.forEach { key, value in
        result[key] = value.filter({ $0 < 7 })
    }
    return result
}
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否有更简单,更优雅的方法来做到这一点?

感谢您的帮助!

arrays dictionary filter swift

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