Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit fcd3a45

Browse files
Update README.md
1 parent 3c8e7f5 commit fcd3a45

File tree

1 file changed

+73
-1
lines changed

1 file changed

+73
-1
lines changed

‎README.md‎

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,80 @@
44
### Experimenting with navigation link. if you find this idea interesting you can expend it into more powerful solution.
55

66

7+
- The result navigaion definition
8+
```swift
9+
var body: some View {
10+
NavigationView{
11+
VStack{
12+
Button("go1") { route = .go1}
13+
Button("go2") { route = .go2}
14+
Button("go3") { route = .go3}
15+
}.navigation(route: $route)
16+
}.navigationViewStyle(.stack)
17+
}
18+
```
19+
720
- Define sub view
21+
```swift
22+
struct SubView: View {
23+
24+
let text: String
25+
26+
var body: some View {
27+
Text("\(text)")
28+
}
29+
}
30+
```
31+
832
- Define routes
33+
```swift
34+
enum Router {
35+
case go1
36+
case go2
37+
case go3
38+
case empty
39+
40+
@ViewBuilder
41+
var builder: some View {
42+
switch(self) {
43+
case .go1: SubView(text: "go1")
44+
case .go2: SubView(text: "go2")
45+
case .go3: SubView(text: "go3")
46+
default: EmptyView()
47+
}
48+
}
49+
}
50+
```
951
- Define view modifire
52+
```swift
53+
struct NavigationModifire : ViewModifier{
54+
55+
@State var isActive : Bool = true
56+
57+
@Binding var route : Router
58+
59+
func body(content: Content) -> some View {
60+
content
61+
.background{
62+
NavigationLink(destination : route.builder, isActive: $isActive ){
63+
EmptyView()
64+
}.hidden()
65+
}
66+
.onChange(of: isActive){
67+
if 0ドル == false { route = .empty }
68+
}
69+
}
70+
71+
}
72+
73+
extension View{
74+
@ViewBuilder
75+
func navigation(route : Binding<Router>) -> some View{
76+
if route.wrappedValue != .empty{
77+
modifier(NavigationModifire(route: route))
78+
}else { self }
79+
}
80+
}
81+
```
82+
1083

11-
- Apply modifire

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /