SwiftUI iOS app custom lockscreen
Прошу прощения за столь размытый вопрос, только начал разбираться с программированием на Swift, после многих лет с .NET приходится менять способ мышления.
В приложении нужно реализовать блокировку ПИН-кодом.
Есть основной mainView и lockView
Когда приложение запускается/восстанавливается из фона нужно переключаться на lockView и требовать ПИН, после успешного ввода возвращаться на mainView.
Какие есть варианты реализации?
Пробовал использовать NavigationView на обеих формах и скрывать кнопку назад, переключение на экран ПИНа проходит нормально, назад никак не хочет, да и разметка приложения плывет из за этого.
UPD: Нашел рабочий вариант
App:
import SwiftUI
enum CurrView:Int {
case lock
case main
}
class OpDat : ObservableObject {
@Published var currView = CurrView.lock
}
@main
struct myApp: App {
private var opData = OpDat()
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(opData)
}
}
}
ContentView:
import SwiftUI
struct ContentView: View {
@EnvironmentObject var opData: OpDat
var body: some View {
switch(opData.lock){
case .welcome:
LockView()
.environmentObject(opData)
case .main:
MainView()
.environmentObject(opData)
}
}
}
Далее просто изменяем значение opData.currentView из любого места в приложении и View будет изменен без изменения стека нивигации
Ответы (1 шт):
Попробуйте ZStack:
import SwiftUI
struct ContentView: View {
@EnvironmentObject var opData: OpDat
var body: some View {
ZStack {
switch opData.currView {
case .welcome:
LockView()
.environmentObject(opData)
case .main:
MainView()
.environmentObject(opData)
}
}
}
}