我正在尝试在上下文菜单中添加删除操作,但它只是显示为默认的黑色。照片应用程序的删除操作也使用红色。我已经看到了一些网上的空间,这是不是目前所提供的功能contextMenu,但是,我也看到了它在第三方应用程序使用在野外这里。有谁知道如何做到这一点?
此外,看好苹果的文档为contextMenu它说,他们已经过时了,除了MacOS的一切。我觉得奇怪的是,他们在引入它一年后就弃用了它。这是否被我应该使用的另一个组件所取代?
var body: some View {
ScrollView {
LazyVGrid(columns: columns, spacing: 20) {
ForEach(photos) { photo in
Image(uiImage: UIImage(data: photo.imageData!)!)
.resizable()
.aspectRatio(1, contentMode: .fill)
.contextMenu(menuItems: {
Button(action: {
deletePhoto(selectedPhoto: photo)
}) {
Label("Remove", systemImage: "trash")
}
})
}
}
.padding()
.navigationBarTitle(Text("Albums"))
.navigationBarItems(trailing:
Button(action: {
self.showingImagePicker = true
}) {
Image(systemName: "plus.circle.fill")
}
)
.sheet(isPresented: $showingImagePicker, onDismiss: loadImage) {
ImagePicker(image: self.$inputImage)
}
}
}
Run Code Online (Sandbox Code Playgroud) 当在 ForEach 之后在视图底部使用 NavigationLink 时,如果它不可见,它将无法工作。
我有一个按钮列表。如果按下按钮,则会将 Bool 设置为 true。该布尔值现在显示一个 NavigationLink,它会立即激活,因为传递的绑定设置为 true。但是,如果数组太长,链接将不起作用,因为一旦按下第一个按钮,链接就会消失。
这是我的代码:
import SwiftUI
struct TestLinkView: View {
@State private var linkIsActive = false
var body: some View {
NavigationView {
VStack {
Button(action: {
linkIsActive = true
}) {
Text("Press")
}
NavigationLink(destination: ListView(linkIsActive: $linkIsActive), isActive: $linkIsActive) {
Text("Navigation Link")
}
}
}
}
}
struct ListView: View {
var nameArray = ["Name1","Name2","Name3","Name4","Name5","Name6","Name7","Name8","Name9","Name10","Name11","Name12","Name13","Name14","Name15","Name16","Name17","Name18","Name19","Name20" ]
@State private var showLink: Bool = false
@State private var selectedName: String = ""
@Binding var …Run Code Online (Sandbox Code Playgroud) import UIKit
var robGlobal = Player(name: "Rob", health: 10, energy: 10)
var matt = Player(name: "Matt", health: 5, energy: 10)
struct Player {
var name: String
var health: Int
var energy: Int
static let maxHealth = 10
mutating func restoreHealth() {
health = Player.maxHealth
}
func balance(_ x: inout Int, _ y: inout Int) {
let sum = x + y
x = sum / 2
y = sum - x
}
}
class ViewController: UIViewController {
override func viewDidLoad() …Run Code Online (Sandbox Code Playgroud) 我有一个简单的场景和 tableView。
我需要选择 3 个单元格,即使我滚动它也会保持这样。我可以选择 1、2 或 3 个单元格,但不能选择 4 个或更多。当我选择 4 个单元格时,什么都不会发生。如果有 3 个选定的单元格,并且我单击其中之一,则应取消选择我选择的单元格。到目前为止,一切都很好。感谢@vadian 的帮助,我可以按如下方式实现此目的。但我整天尝试为这种情况编写单元测试,但无法处理它。我决定向帮助社区寻求帮助,但仍然找不到方法。
问题是:如何针对这种情况用一种好的方法编写单元测试?
/// My Model ///
struct Item: Codable {
let name: String
let image: String
var isSelected = false
enum CodingKeys: String, CodingKey {
case name = "name"
case image = "image"
}
}
// MARK: - UITableViewDelegate
extension ViewController: UITableViewDelegate {
let items = [Item]() // fetched from network, there is item objects inside it.
// MARK: - UITableViewDataSource
extension ItemViewModel: UITableViewDataSource …Run Code Online (Sandbox Code Playgroud)