diff --git a/punchnet/Views/Settings/SettingsState.swift b/punchnet/Views/Settings/SettingsState.swift index 9593651..d53c3b7 100644 --- a/punchnet/Views/Settings/SettingsState.swift +++ b/punchnet/Views/Settings/SettingsState.swift @@ -20,22 +20,12 @@ class SettingsState { var name: String } - enum MenuItem: String, CaseIterable { - case accout = "账号" - case network = "网络" - case device = "设备" - case system = "软件" - case about = "关于" - } - var networks: [Network] var selectedNetwork: Network var exitNodes: [ExitNode] var selectedExitNode: ExitNode - var currentMeun: MenuItem = .accout - init() { let networks: [Network] = [ .init(id: 1, name: "测试网络12"), diff --git a/punchnet/Views/Settings/SettingsView.swift b/punchnet/Views/Settings/SettingsView.swift index 6759865..817941d 100644 --- a/punchnet/Views/Settings/SettingsView.swift +++ b/punchnet/Views/Settings/SettingsView.swift @@ -10,14 +10,23 @@ import SwiftUI struct SettingsView: View { @State private var state = SettingsState() @State private var hovering = false + @State private var selectedMenu: MenuItem = .accout + + enum MenuItem: String, CaseIterable { + case accout = "账号" + case network = "网络" + case device = "设备" + case system = "软件" + case about = "关于" + } var body: some View { NavigationSplitView { - List(SettingsState.MenuItem.allCases, id: \.self) { menu in + List(MenuItem.allCases, id: \.self) { menu in HStack(alignment: .center) { Rectangle() .frame(width: 3, height: 25) - .foregroundColor(self.state.currentMeun == menu ? .black : .clear) + .foregroundColor(self.selectedMenu == menu ? .black : .clear) Text(menu.rawValue) @@ -25,7 +34,7 @@ struct SettingsView: View { } .contentShape(Rectangle()) .onTapGesture { - self.state.currentMeun = menu + self.selectedMenu = menu } .onHover { inside in hovering = inside @@ -41,7 +50,7 @@ struct SettingsView: View { } detail: { VStack(alignment: .leading, spacing: 0) { - switch self.state.currentMeun { + switch self.selectedMenu { case .accout: SettingsAccountView(state: self.state) case .network: