如何正确地将不可滚动的 UITableView 放入 UIScrollView?

Posted

技术标签:

【中文标题】如何正确地将不可滚动的 UITableView 放入 UIScrollView?【英文标题】:How to put non-scrollable UITableView in UIScrollView correctly? 【发布时间】:2018-03-31 07:06:01 【问题描述】:

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

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

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

问题 TableView 不会随着添加更多行而增长。我不知道为什么,但我没有添加高度约束来固定 TableView 的高度。那么为什么 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】:

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

怎么做?

根据您分享的设计,假设您拥有三种不同类型的东西。

    蓝色细胞(包含信息) 绿色细胞(我不知道它的用途。:)) 用户单元格。

所以基本上你需要三种不同的 CustomCell 和 在 CellForRowAtIndexPath 方法调用如下:

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

else 
    return UserCell;

希望这会有所帮助。 :)

【讨论】:

这是我现在使用的解决方案,谢谢。但是,我很沮丧,以至于我试图完成的事情没有奏效,我就是放不下,感觉就像我浪费了很多时间而失败了。 这不是我问题的确切答案,只是另一种解决方案,所以 +1 ;)

以上是关于如何正确地将不可滚动的 UITableView 放入 UIScrollView?的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 不可滚动但足够高

如何使UITableview中的DPFBannerView不滚动

如何正确地将项目与“side=BOTTOM”/“anchor=S”对齐?

动态调整UITableView的大小,该大小将显示为不可滚动的内容列表

如何正确地将代码中的字幕 UITableViewCell 出列?

滚动后 UITableView 单元格正确