【发布时间】:2020-12-07 22:08:39
【问题描述】:
我需要在两个视图( HomeN2 和 MessengerView )之间滚动,并使用一个按钮来显示 MessengerView 并返回 HomeN2
在首页
...
Carousel(page: $page, showSearch: $showSearch, showSearchRef: $showSearchRef, showSetting: $showSetting, showNotification: $showNotification, statubar: $statubar, config: $config, scrollto: $scrollto, selectedItem2: $selectedItem2)
...
struct Carousel : UIViewRepresentable {
func makeCoordinator() -> Coordinator {
return Carousel.Coordinator(parent1: self)
}
@Binding var page : Int
@Binding var showSearch : Bool
@Binding var showSearchRef : Bool
@Binding var showSetting : Bool
@Binding var showNotification : Bool
@Binding var statubar : Bool
@Binding var config: HeroConfiguration
@Binding var scrollto : Bool
@Binding var selectedItem2: User?
func makeUIView(context: Context) -> UIScrollView{
let total = UIScreen.main.bounds.width * 2
let view = UIScrollView()
view.isPagingEnabled = true
view.contentSize = CGSize(width: total, height: 1.0)
view.bounces = true
view.showsVerticalScrollIndicator = false
view.showsHorizontalScrollIndicator = false
view.delegate = context.coordinator
let view1 = UIHostingController(rootView: List1(page: $page, showSearch: $showSearch, showSearchRef: $showSearchRef, showSetting: $showSetting, showNotification: $showNotification, config: $config, scrollto: $scrollto, selectedItem2: $selectedItem2, statubar: $statubar ))
view1.view.frame = CGRect(x: 0, y: 0, width: total, height: UIScreen.main.bounds.height)
view1.view.backgroundColor = .clear
view.addSubview(view1.view)
return view
}
func updateUIView(_ uiView: UIScrollView, context: Context) {
}
class Coordinator : NSObject,UIScrollViewDelegate{
var parent : Carousel
init(parent1: Carousel) {
parent = parent1
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let page = Int(scrollView.contentOffset.x / UIScreen.main.bounds.width)
//scrollView.setContentOffset(CGPoint(x: self.parent.scrollto ? UIScreen.main.bounds.width : 0, y: 0), animated: true)
self.parent.page = page
print(page)
}
}
}
struct List1 : View {
@Binding var page : Int
@Binding var showSearch : Bool
@Binding var showSearchRef : Bool
@Binding var showSetting : Bool
@Binding var showNotification : Bool
@Binding var config: HeroConfiguration
@Binding var scrollto : Bool
@Binding var selectedItem2: User?
@Binding var statubar : Bool
var body: some View{
HStack(spacing: 0){
HomeN2(showSetting: $showSetting, showNotification: $showNotification, showSearch: $showSearch, showSearchRef: $showSearchRef, scrollto: $scrollto, statubar: $statubar, selectedItem2: $selectedItem2, config: $config)
MessageView()
}}}
【问题讨论】:
-
目标不明确,能否详细说明?
-
我有两页;我通过左右滑动来在它们之间移动,就像 instagram 页面主页和页面消息一样,我需要添加两个按钮来在它们之间移动
-
这是否回答了您的问题stackoverflow.com/a/62833840/12299030?
-
在tabview中出现垂直滚动的问题我无法禁用它