@@ -12,11 +12,7 @@ class _PlatformTableHeaderFooterView<SectionModel: Identifiable, Content: View>:
12
12
var item : SectionModel !
13
13
var makeContent : ( ( SectionModel ) -> Content ) !
14
14
15
- private var contentHostingController : UIViewController !
16
-
17
- var rootView : some View {
18
- self . makeContent ( item) . id ( item. id)
19
- }
15
+ var contentHostingController : UIHostingController < RootView > !
20
16
21
17
public override init ( reuseIdentifier: String ? ) {
22
18
super. init ( reuseIdentifier: reuseIdentifier)
@@ -34,7 +30,7 @@ class _PlatformTableHeaderFooterView<SectionModel: Identifiable, Content: View>:
34
30
contentView. bounds. origin = . zero
35
31
layoutMargins = . zero
36
32
37
- contentHostingController = UIHostingController ( rootView: rootView )
33
+ contentHostingController = UIHostingController ( rootView: RootView ( base : self ) )
38
34
contentHostingController. view. backgroundColor = . clear
39
35
contentHostingController. view. translatesAutoresizingMaskIntoConstraints = false
40
36
@@ -50,7 +46,24 @@ class _PlatformTableHeaderFooterView<SectionModel: Identifiable, Content: View>:
50
46
contentHostingController. view. bottomAnchor. constraint ( equalTo: contentView. bottomAnchor)
51
47
] )
52
48
} else {
53
- ( contentHostingController as? UIHostingController ) ? . rootView = rootView
49
+ contentHostingController. rootView = RootView ( base: self )
50
+ }
51
+ }
52
+ }
53
+
54
+ extension _PlatformTableHeaderFooterView {
55
+ struct RootView : View {
56
+ private let id : AnyHashable
57
+ private let content : Content
58
+
59
+ init ( base: _PlatformTableHeaderFooterView < SectionModel , Content > ) {
60
+ self . content = base. makeContent ( base. item)
61
+ self . id = base. item. id
62
+ }
63
+
64
+ var body : some View {
65
+ content
66
+ . id ( id)
54
67
}
55
68
}
56
69
}
0 commit comments