SwiftUI - есть ли аналог PopViewController в SwiftUI?

Эта ошибка возникает при переполнении циклов цикла. Давайте рассмотрим простой пример:

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!

25
задан LinusGeffarth 19 June 2019 в 21:35
поделиться

5 ответов

Измените свою структуру 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") }
    }
}
12
ответ дан 27 November 2019 в 21:12
поделиться

Существует теперь способ программно появиться в 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
4
ответ дан 27 November 2019 в 21:12
поделиться

Это, кажется, работает на меня на watchOS (не примерили iOS):

@Environment(\.presentationMode) var presentationMode

И затем когда необходимо появиться

self.presentationMode.wrappedValue.dismiss()
3
ответ дан 27 November 2019 в 21:12
поделиться

В целевой передаче представление Вы хотите перенаправить, и в данных передачи блока Вы для передачи в другом представлении.

NavigationLink(destination: "Pass the particuter View") {
    Text("Push")
}
0
ответ дан 27 November 2019 в 21:12
поделиться

Ниже работ для меня в XCode11 GM

self.myPresentationMode.wrappedValue.dismiss()
1
ответ дан 27 November 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: