Вопрос 1. Я пытаюсь добавить контекстное меню к кнопке внутри списка -> Раздел -> ScrollView (горизонтально) в SwiftUI. Однако когда я нажимаю и удерживаю кнопку, контекстное меню применяется ко всему разделу, а не только к кнопке. Вот соответствующий код:
СКРИНШОТ 1
Почему контекстное меню применяется ко всему разделу, а не только к кнопке? Как сделать так, чтобы контекстное меню отображалось только для кнопки?
Вопрос 2. У меня есть представление templateSection, в которое я загружаю некоторые элементы шаблона и отображаю их в горизонтальной прокрутке. Однако всякий раз, когда я меняю тип фильтра или загружаю больше шаблонов, представление скелетной загрузки начинает вести себя странно — оно мерцает или отображается неправильно.
ВИДЕО (GIF) 2
Вот часть моего кода, где я определяю раздел с помощью ScrollView и LazyHStack:
Когда я прокручиваю или меняю фильтр, представление загрузки скелета дает сбой или ведет себя некорректно. странно. Что может быть причиной этой проблемы и как ее исправить?
Section(header: Text("Templates")) {
ScrollView(.horizontal, showsIndicators: false) {
LazyHStack(spacing: 15) {
Button(action: {
// Action to add a new template
}) {
VStack {
Image(systemName: "plus")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 30, height: 30)
.padding()
.background(Color.white)
.cornerRadius(10)
Text("Create")
.foregroundColor(.primary)
.font(.footnote)
.multilineTextAlignment(.center)
.padding(.top, 5)
.frame(width: 80)
}
.frame(width: 80, height: 100)
}
.contextMenu {
Button("Hello") {
// Context menu action
}
}
}
}
}
private var templateSection: some View {
Section(header: Text("Templates")) {
ScrollView(.horizontal, showsIndicators: false) {
LazyHStack(spacing: 15) {
if templatesLimit > 0 {
Button(action: {
showingTemplateAddSheet = true
}) {
VStack {
Image(systemName: "plus")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 30, height: 30)
.padding()
.background(Color.white)
.cornerRadius(10)
Text("Create")
.foregroundColor(.primary)
.font(.footnote)
.multilineTextAlignment(.center)
.padding(.top, 5)
.frame(width: 80)
}
.frame(width: 80, height: 100)
}
.sheet(isPresented: $showingTemplateAddSheet) {
NewTemplateView(shouldRefreshParentView: $shouldRefreshParentView)
}
}
ForEach(filteredTemplates) { item in
Button(action: {
selectedTemplateItem = item
}) {
VStack {
Image(systemName: "\(item.iconName)")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 30, height: 30)
.padding()
.background(Color.white)
.cornerRadius(10)
Text(item.name)
.foregroundColor(.primary)
.font(.footnote)
.multilineTextAlignment(.center)
.padding(.top, 5)
.frame(width: 80)
}
.frame(width: 80, height: 100)
}
}
if viewModel.isLoadingTemplatesMore {
ForEach(0..
Подробнее здесь: https://stackoverflow.com/questions/791 ... n-in-swift
Контекстное меню внутри ScrollView влияет на весь раздел вместо кнопки в SwiftUI ⇐ Php
Кемеровские программисты php общаются здесь
1729709046
Anonymous
Вопрос 1. Я пытаюсь добавить контекстное меню к кнопке внутри списка -> Раздел -> ScrollView (горизонтально) в SwiftUI. Однако когда я нажимаю и удерживаю кнопку, контекстное меню применяется ко всему разделу, а не только к кнопке. Вот соответствующий код:
СКРИНШОТ 1
Почему контекстное меню применяется ко всему разделу, а не только к кнопке? Как сделать так, чтобы контекстное меню отображалось только для кнопки?
Вопрос 2. У меня есть представление templateSection, в которое я загружаю некоторые элементы шаблона и отображаю их в горизонтальной прокрутке. Однако всякий раз, когда я меняю тип фильтра или загружаю больше шаблонов, представление скелетной загрузки начинает вести себя странно — оно мерцает или отображается неправильно.
ВИДЕО (GIF) 2
Вот часть моего кода, где я определяю раздел с помощью ScrollView и LazyHStack:
Когда я прокручиваю или меняю фильтр, представление загрузки скелета дает сбой или ведет себя некорректно. странно. Что может быть причиной этой проблемы и как ее исправить?
Section(header: Text("Templates")) {
ScrollView(.horizontal, showsIndicators: false) {
LazyHStack(spacing: 15) {
Button(action: {
// Action to add a new template
}) {
VStack {
Image(systemName: "plus")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 30, height: 30)
.padding()
.background(Color.white)
.cornerRadius(10)
Text("Create")
.foregroundColor(.primary)
.font(.footnote)
.multilineTextAlignment(.center)
.padding(.top, 5)
.frame(width: 80)
}
.frame(width: 80, height: 100)
}
.contextMenu {
Button("Hello") {
// Context menu action
}
}
}
}
}
private var templateSection: some View {
Section(header: Text("Templates")) {
ScrollView(.horizontal, showsIndicators: false) {
LazyHStack(spacing: 15) {
if templatesLimit > 0 {
Button(action: {
showingTemplateAddSheet = true
}) {
VStack {
Image(systemName: "plus")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 30, height: 30)
.padding()
.background(Color.white)
.cornerRadius(10)
Text("Create")
.foregroundColor(.primary)
.font(.footnote)
.multilineTextAlignment(.center)
.padding(.top, 5)
.frame(width: 80)
}
.frame(width: 80, height: 100)
}
.sheet(isPresented: $showingTemplateAddSheet) {
NewTemplateView(shouldRefreshParentView: $shouldRefreshParentView)
}
}
ForEach(filteredTemplates) { item in
Button(action: {
selectedTemplateItem = item
}) {
VStack {
Image(systemName: "\(item.iconName)")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 30, height: 30)
.padding()
.background(Color.white)
.cornerRadius(10)
Text(item.name)
.foregroundColor(.primary)
.font(.footnote)
.multilineTextAlignment(.center)
.padding(.top, 5)
.frame(width: 80)
}
.frame(width: 80, height: 100)
}
}
if viewModel.isLoadingTemplatesMore {
ForEach(0..
Подробнее здесь: [url]https://stackoverflow.com/questions/79119310/context-menu-inside-scrollview-affects-entire-section-instead-of-button-in-swift[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия