SwiftUI actionSheet в .tabItem

Я пытаюсь вставить actionSheet в кнопку действия в .tabItem. Я вижу только представление с текстом «Тест 1». Не могу заставить его отображать меню с разными опциями ?. Заранее спасибо.

@State var showActionSheet = false

...

var actionSheet : ActionSheet{

    ActionSheet(title: Text("Crear"), message: Text("Selecciona opción"), buttons: [
        .default(Text("Opción 1")),
        .default(Text("Opción 2")),
        .destructive(Text("Cancel"))
    ])
}

...

        }.tag(1)

            Text("Test 1")

            .tabItem {
                VStack {
                    Image(systemName: "1.circle")


                    Button(action: {
                        self.showActionSheet.toggle()
                    }) {
                        Text("Display Action Sheet")
                    }
                    .actionSheet(isPresented: $showActionSheet, content: {
                        self.actionSheet  })

                }

person David MM    schedule 25.11.2019    source источник
comment
Это невозможно. TabItem принимает только изображение и текст, и его единственная функция - переключать представления.   -  person LuLuGaGa    schedule 25.11.2019


Ответы (1)


Как сообщает Apple :

Представления вкладок поддерживают только элементы вкладок типа «Текст», «Изображение» или изображения, за которыми следует текст. Передача любого другого типа представления приводит к появлению видимого, но пустого элемента вкладки.

Вы можете использовать решение, которое я описал здесь. Вкратце: вы делаете пустой tabItem (Text(" ")), устанавливаете Image в нужную позицию и используете .onTapGesture. Там же я сделал пример с ActionSheet

person Александр Грабо&    schedule 25.11.2019