Эта ошибка возникает при переполнении циклов цикла. Давайте рассмотрим простой пример:
class demo{
public static void main(String a[]){
int[] numberArray={4,8,2,3,89,5};
int i;
for(i=0;i<numberArray.length;i++){
System.out.print(numberArray[i+1]+" ");
}
}
Сначала я инициализировал массив как «numberArray». то некоторые элементы массива печатаются с использованием цикла. Когда цикл запускает время «i», напечатайте элемент (numberArray [i + 1] .. (когда значение i равно 1, будет напечатан элемент numberArray [i + 1].) Предположим, что, когда i = (numberArray. length-2), последний элемент массива печатается. Когда значение «i» переходит к (numberArray.length-1), нет значения для печати. В этот момент происходит «ArrayIndexOutOfBoundsException». Я надеюсь, что вы сможете получить idea.thank you!
Измените свою структуру BView следующим образом. Кнопка будет работать, как popViewController сделал в UIKit.
struct BView: View {
@Environment(\.presentationMode) var mode: Binding<PresentationMode>
var body: some View {
Button(action: { self.mode.wrappedValue.dismiss() })
{ Text("Come back to A") }
}
}
Существует теперь способ программно появиться в NavigationView, если Вы хотели бы. Это находится в бета 5.
Уведомлении, что Вам не нужна кнопка "Назад". Вы могли программно инициировать showSelf свойство в DetailView любым путем, Вам нравится. И Вы не должны отображать текст "Нажатия" в ведущем устройстве. Это мог быть EmptyView (), таким образом, создав невидимый переход.
(Новая функциональность NavigationLink поглощает NavigationDestinationLink устаревший)
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
MasterView()
}
}
}
struct MasterView: View {
@State var showDetail = false
var body: some View {
VStack {
NavigationLink(destination: DetailView(showSelf: $showDetail), isActive: $showDetail) {
Text("Push")
}
}
}
}
struct DetailView: View {
@Binding var showSelf: Bool
var body: some View {
Button(action: {
self.showSelf = false
}) {
Text("Pop")
}
}
}
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
Это, кажется, работает на меня на watchOS (не примерили iOS):
@Environment(\.presentationMode) var presentationMode
И затем когда необходимо появиться
self.presentationMode.wrappedValue.dismiss()
В целевой передаче представление Вы хотите перенаправить, и в данных передачи блока Вы для передачи в другом представлении.
NavigationLink(destination: "Pass the particuter View") {
Text("Push")
}
Ниже работ для меня в XCode11 GM
self.myPresentationMode.wrappedValue.dismiss()