Во-первых, я рассмотрел аналогичный вопрос, но он не касается моего варианта использования.
Текущая таблица действий в SwiftUI на iPad
Моя проблема в том, что У меня есть NavigationBarItem
в моем NavigationView
, который будет переключать ActionSheet
при нажатии. Это поведение работает правильно при использовании на iPhone.
Однако, когда я использую это на iPad, обе кнопки на моем экране становятся серыми, и ничего не происходит. Повторное нажатие на кнопки сделает их активными (синие), но опять же, лист не отображается.
Наконец, если я выберу кнопку в середине экрана (Показать кнопку), то таблица действий будет правильно представлена на iPad.
Я тестировал Xcode 11 & iOS 13.5 и Xcode 12 & iOS 14. В поведении нет никаких изменений.
import SwiftUI
struct ContentView: View {
@State private var isButtonSheetPresented = false
@State private var isNavButtonSheetPresented = false
var body: some View {
NavigationView {
Button(action: {
// Works on iPad & iPhone
self.isButtonSheetPresented.toggle()
}) {
Text("Show Button")
}
.actionSheet(isPresented: $isButtonSheetPresented,
content: {
ActionSheet(title: Text("ActionSheet"))
})
.navigationBarTitle(Text("Title"),
displayMode: .inline)
.navigationBarItems(trailing:
Button(action: {
// Works on iPhone, fails on iPad
self.isNavButtonSheetPresented.toggle()
}) {
Text("Show Nav")
}
.actionSheet(isPresented: $isNavButtonSheetPresented,
content: {
ActionSheet(title: Text("ActionSheet"))
})
)
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
Наконец, это как он отображается на iPad при нажатии на «Показать навигацию»:
![enter image description here](https://i.stack.imgur.com/8rnLb.png)
This is a simplified setup for the screen where this issue occurs. I will need to retain the navigation settings shown, but have included them for clarity.
*** UPDATED ***
While it is not possible for the real app behind this, I did remove the .navigationViewStyle(StackNavigationViewStyle())
setting, which did make an ActionSheet appear, although in the wrong spot as seen below.
![enter image description here](https://i.stack.imgur.com/TI6mC.png)
This also results in bizarre placement for the Button one accessed via "Show Button".
введите описание изображения здесь