如何在UIScrollView中正确放置不可滚动的UITableView?

时间:2017-10-19 09:18:55

标签: ios xcode uitableview uiscrollview storyboard

我想要什么 我尝试将一个不可滚动的TableView添加到ScrollView中,但是我没能成功,所以我需要你的帮助。 原因是我希望有一个Info页面,其中包含一些信息以及TableView中的用户列表以及TableView下面的一些其他UI元素。我只使用Storyboard,因为我不喜欢以编程方式布局视图。

策略 页面可以比屏幕窗口可以容纳的长,因此是ScrollView,因此用户可以向上滚动以显示更多内容。为了显示用户列表,我想使用TableView,这是我想到的第一件事,我认为使用TableView是非常合乎逻辑的。这个想法是,如果动态添加更多行,则TableView增长的时间越长,并且信息以某种方式传递回ScrollView,ScrollView轮流调整其高度。

测试 因此,我首先使用包含动态文本的UITextView进行实验和测试,该文件按预期工作。如果我在其中放入一些长文本,页面可以向上和向下滚动以显示所有内容。但在使用TableView测试后,结果并非我想要的。我发现TableView有一个固定的高度,在添加行时似乎没有动态变化。因此,TableView只显示2行而不是10行,因为TableView不会增长。我像UITextView那样关闭了TableView的属性“Scrolling Enabled”。

问题
随着添加更多行,TableView不会增长。我不知道为什么,但我没有添加高度约束来修复TableView的高度。那么为什么TableView不会成长?

图片: ScrollView with TextView and TableView

一些教程的来源:
https://www.natashatherobot.com/ios-autolayout-scrollview/ https://medium.com/rocknnull/ios-working-with-uiscrollview-uitextview-and-auto-layout-afa39fe2cac8 https://medium.com/disblu/scroll-view-auto-layout-in-xcode-8-7f43e82fe33

1 个答案:

答案 0 :(得分:1)

您可以使用单个tableView实现此目的。您需要做的是使用customCell。

怎么做?

根据您的设计,您分享的内容可以说您有三种不同类型的东西。

  1. Blue Cell(包含信息)
  2. 绿色细胞(我不知道它的目的。:))
  3. 用户单元。
  4. 所以基本上你需要三种不同的CustomCell和 在 CellForRowAtIndexPath 方法中调用如下:

    if(indexpath.row == 0) {
        return BlueCell;
        }
    else if(indexpath.row == 1) {
        return GreenCell;
    }
    else {
        return UserCell;
    }
    

    希望这会有所帮助。 :)