UIScrollView内的不可滚动UITableView

时间:2019-06-25 07:48:22

标签: ios uitableview uiscrollview swift4.2 swift5

我有一个要在其中实现UITableView的应用程序,该应用程序的可滚动属性设置为False。

我已经在UIScrollView中添加了UITableView来完成此任务,现在我希望我的UIScrollView向下滚动到UITableView的最后一个单元格。因此,如何为UIScrollView分配动态高度,以便它可以滚动到UITableView的最后一个单元格。

2 个答案:

答案 0 :(得分:0)

您真的需要滚动视图吗?您可以简单地做到这一点而无需滚动视图

                    <ListView  x:Name="SingleBeanView" 
                ItemsSource="{Binding Beans}" 
                IsGroupingEnabled="true"
                Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"
                           BackgroundColor="Transparent">
                    <ListView.GroupHeaderTemplate>
                        <DataTemplate>
                            <ViewCell ios:Cell.DefaultBackgroundColor="Transparent" Height="52">
                                <Label Text="{Binding Heading}" TextColor="{StaticResource LightTextColor}" FontSize="Large" HorizontalOptions="Start" VerticalOptions="Start" Margin="15,10,0,0"/>
                            </ViewCell>
                        </DataTemplate>
                    </ListView.GroupHeaderTemplate>
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell>
                                <StackLayout BackgroundColor="Transparent" Orientation="Vertical">
                                    <StackLayout Orientation="Horizontal">
                                        <Label Text="{Binding Field1}"/>
                                        <Label Text="{Binding Field2}"/>
                                        <Label Text="{Binding Field3}"/>
                                    </StackLayout>
                                </StackLayout>
                            </ViewCell>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>

tableView.scrollToRow(at: IndexPath(row: lastIndex, section: 0), at: .middle, animated: true)

Apple也不建议在scrollview内添加tableview Apple style guide

  

请勿将滚动视图放在另一个滚动视图内。这样做会导致难以控制的界面难以控制。

答案 1 :(得分:0)

我已经解决了这个问题,并在此处发布了我的答案,以便对其他开发人员想要实现这种任务的工作有帮助。

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    self.scrollView.contentSize = CGSize(width: tblHomeTableView.frame.width, height: self.tblHomeTableView.frame.height)
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tblHomeTableView.dequeueReusableCell(withIdentifier: "HomeTableViewCell", for: indexPath) as! HomeTableViewCell
    cell.lblDayCoount.text = "Row: \(indexPath.row + 1)"
    self.tblHomeTableView.frame.size = tblHomeTableView.contentSize
    return cell
}

这将根据UITableView中的内容调整UIScrollView的高度。