【问题标题】:Dynamically setting size of frame of a UITableView which is placed in UIScrollView动态设置放置在 UIScrollView 中的 UITableView 的框架大小
【发布时间】:2015-01-09 10:14:06
【问题描述】:

我正在使用 swift 并且有一个包含 UIViewController 的故事板,其中包含一个带有 UITableView 的 UIScrollView。

我想要做的是在表格中加载一个 excel 文件,所以我需要水平滚动。我可以设置滚动视图的内容大小:

scrollView.contentSize = CGSize(width: 3500, height: scrollView.contentSize.height)

我还需要设置 UITableView 的框架大小。当我从情节提要中设置它并显示该字段时它可以工作,但是当我从 viewDidLoad 方法以编程方式设置它时它不起作用。宽度值显示为更改为 3500,但是当我在 tableView cellForRowAtIndexPath 方法中检查时,我看到了故事板中设置的值。

【问题讨论】:

  • 出于好奇,您为什么将UITableView 放在UIScrollView 中? UITableView 有自己的内部UIScrollView
  • 在将 UITableView 放入 UIScrollView 之前,我无法水平滚动。我是IOS开发的新手,只是认为我只能通过放入来水平滚动,因为没有它我无法滚动。如果我不创建单独的滚动视图,如何设置内部滚动视图的内容大小?
  • 好吧,从技术上讲,UITableView UIScrollView;它是一个子类。您可以直接访问contentSize
  • 是的,刚刚意识到,因为我有另一个滚动视图,它现在没有效果。将尝试删除 UIScrollView 并让您知道。
  • 我删除了 UIScrollView 并设置了 tableView 的 contentSize 但不幸的是无法水平滚动。 (回到我开始认为我必须使用 UIScrollView 的地方)

标签: ios iphone uitableview swift uiscrollview


【解决方案1】:

这是我刚刚创建的示例项目,看看我是否可以创建您要求的内容。

https://github.com/joalbright/Excel

【讨论】:

  • 非常感谢。刚刚检查了项目。您有 3000/200 = 15 列。所以看到你从故事板上将表格视图的框架大小设置为 3000。我的确切问题是我必须通过代码动态设置列数,从而动态设置表格视图的框架大小。
  • 更新了项目以使 tableView 宽度动态。对 tableView 进行约束并以编程方式更改其宽度。
  • 完美,这正是我需要的:) 非常感谢。但是你能告诉我我之前做错了什么吗?我将 tableview.frame 设置为我需要的宽度。
  • 你怎么看“tableview 已经包含一个滚动视图,Apple 文档不鼓励在 UIScrollView 中嵌入 UITableView”
  • 彼此之间有多个滚动视图通常很糟糕......如果它们都滚动相同的方向,则更多。如果您正确管理它,则在水平滚动视图内有一个垂直滚动视图就可以了。
【解决方案2】:

Apple Documentation 不鼓励您将 UITableView 嵌入到 UIScrollView 中。

您不应该在 UIScrollView 对象中嵌入 UIWebView 或 UITableView 对象。如果这样做,可能会导致意外行为,因为这两个对象的触摸事件可能会混淆和错误处理。

你的UITableViewUIScrollView 是水平滚动的吗?

【讨论】:

  • 嗯,我似乎在为这种意想不到的行为而苦苦挣扎。
  • 是的,我可以水平滚动,但问题是即使右侧有更多内容,tableView 也会结束。所以我想我必须改变tableView框架的大小。当我如上所述从故事板中将其设置为较大的值时,一切都很好。
猜你喜欢
  • 1970-01-01
  • 2011-03-17
  • 2012-05-18
  • 1970-01-01
  • 2011-05-22
  • 1970-01-01
  • 2012-09-20
  • 2012-04-18
  • 1970-01-01
相关资源
最近更新 更多