Làm cách nào để định cấu hình các nút ContextMothy để xóa và tắt trong SwiftUI?


9

Tôi đã cố gắng cấu hình nút trong contextMenu, nhưng nó không hoạt động.

Text("A label that have context menu")
    .contextMenu {
        Button(action: {
            // remove it
        }) {
            Text("Remove")
                .foregroundColor(.red) // Not working
            Image(systemName: "trash")
        }.disabled(true) // Not working
    }

tôi có gì:

 Ngoại hình không hoạt động

Những gì tôi đang tìm kiếm: ( xóagọi nút)

Bản giới thiệu

Tôi sẽ tạo một cái UIActiongiống như sau trong UIKitnhưng tôi không thể tìm thấy bất kỳ công cụ sửa đổi nào hoặc dù sao để đưa cái này lên SwiftUI :

let delete = UIAction(title: "Remove", image: UIImage(systemName: "trash"), attributes: .destructive) { action in
    // remove it
}

bạn đã tìm thấy một câu trả lời?
Andrea Miotto

Có vẻ như điều đó là không thể (với SwiftUI thuần túy).
Mojtaba Hosseini

Câu trả lời:


-2

Toggling một boolean xác định xem chế độ xem có thể nhìn thấy hoạt động:

struct ContentView: View {
    @State var textVisible = true
    var body: some View {
        Group {
            if textVisible {
                Text("Hello World")
                .contextMenu {
                    Button(action: {
                        self.textVisible = false
                    }) {
                        HStack {
                            Text("Remove")
                            Image(systemName: "trash")
                        }
                    }
                }
            }
        }
    }
}

Tất nhiên, vì menu ngữ cảnh được đính kèm với Textcái đã bị xóa, nó sẽ bị xóa vĩnh viễn trừ khi bạn có một cái gì đó khác (ví dụ a Button) để bật boolean ( textVisibletrong trường hợp này).

Chỉnh sửa : OP muốn biết cách làm cho các nút trong menu ngữ cảnh bị vô hiệu hóa / phá hủy (màu nền xám / đỏ), nhưng tôi tin rằng vào ngày 20 tháng 10 năm 2019, SwiftUI có một lỗi không cho phép bất kỳ nút nào trong ngữ cảnh menu có bất kỳ màu nào khác ngoài màu đỏ. Mặt khác, cài đặt nút .disabled(true)sẽ cho màu xám và tắt nó đi, và đặt màu nền trước của nút thành màu đỏ ( foregroundColor(.red)) sẽ làm cho nút bị phá hủy.


Bạn trả lời chủ yếu là tốt. Chỉ cần phần khác là không cần thiết.
E.Coms

1
Bạn đã hiểu nhầm câu hỏi của tôi. Tôi muốn định cấu hình các nút để phá hủy (màu đỏ) hoặc bị vô hiệu hóa (màu xám và không hoạt động)
Mojtaba Hosseini

1
@MojtabaHosseini Xin lỗi vì đã hiểu sai! Tôi nghĩ SwiftUI có một lỗi ngay bây giờ khi các tùy chọn menu ngữ cảnh không thể thay đổi màu sắc, chúng chỉ có thể là màu đen. Bạn có thể thấy có lợi khi nộp báo cáo lỗi.
RPatel99

Đối với những người bị hạ bệ: OP đã thay đổi câu hỏi của anh ấy sau khi tôi đăng câu trả lời của mình. Từ ngữ ban đầu của câu hỏi khiến cho có vẻ như OP chỉ cần biết cách xóa chế độ xem bằng menu ngữ cảnh. Tôi không xóa câu trả lời của mình vì đây là câu trả lời duy nhất cho câu hỏi này và tôi vẫn nghĩ rằng nó có liên quan đến câu hỏi và có thể hữu ích cho mọi người.
RPatel99
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.