【问题标题】:UITableView not loading fully inside UIScrollViewUITableView 未在 UIScrollView 内完全加载
【发布时间】:2015-04-24 21:21:56
【问题描述】:

我正在创建一个 ViewController,它将包含一个 scrollView 作为它的一部分。在那个滚动视图中,我想包含另一个 ViewController 的视图。当我在 ScrollView 中设置这个 ViewController 时,所有 ViewController 的数据都是从网络中提取的,甚至它的“ViewDidLoad”方法也会被调用。但是,除了 tableViewLines 和我为显示页面正在加载而创建的微调器之外,什么都没有出现。这是它的样子(有问题的 ScrollView 在 Commitments and Awards 下):

在scrollView里面应该加载的是一个tableView,看起来像这样:

【问题讨论】:

  • 为什么要在 UIScrollView 中添加 UITableView?框架尺寸小于其 contentSize 的 tableView 将使其内容滚动。除非您想并排显示多个 tableView,否则应该将 tableView 直接添加到视图中。
  • 我的最终目标不是添加 TableView。我只是希望它完成,这样当我构建我将使用的实际视图时,我可以毫无问题地添加它。
  • 我不确定你的目标。如果您只想在描述性“标题视图”下显示元素列表,我建议只使用带有一些自定义视图的全屏 tableView 作为tableViewHeader
  • 我的目标主要是锻炼。我实际上并不希望在最终应用程序的滚动视图中使用该 tableView。不过,我想知道如何让它出现在那里,因为我稍后会做类似的事情。
  • 问题可能是它在 UIScrollView 内部(当我尝试 UIView 时它也不起作用)而不是子视图控制器?如果是这样,IB 不允许我添加子 View Controller 的——仅限 Storyboard,而且我没有使用 Storyboard。

标签: ios objective-c uitableview uiscrollview


【解决方案1】:

可能是 tableview 的委托/数据源设置不正确。请问tableView:numberOfRowsInSection:tableView:cellForRowAtIndexPath:是否被调用?

【讨论】:

    【解决方案2】:

    在另一个视图控制器视图中显示一个视图控制器的视图不是一个好主意。苹果不推荐。无论您想做什么,都可以在同一个视图控制器中完成。

    【讨论】:

    • 那是错误的。 UIViewController 可以有 childViewControllers,甚至有特定的方法来处理它们。实际上,一个 UINavigationController 就是这样,一个 UIViewController 包含一个或多个子 UIViewController(其视图添加到父视图中)。
    • 一个导航控制器,tabbarcontroller 可以引用多个视图控制器,但它们不是您所想的子视图控制器。视图和视图控制器之间是有区别的。一个视图控制器拥有一个视图,只有它自己的视图控制器应该处理一个视图,而不是其他视图控制器。
    • 取自 Apple 的 UIViewController 文档:If the view controller is owned by another view controller, then the parent view controller determines when and how the child view controller’s contents are displayed.。我建议在这里阅读标题为“实现容器视图控制器”的部分:developer.apple.com/library/ios/documentation/UIKit/Reference/…
    • 是的,我和我的说法都是对的,一个视图控制器可以拥有另一个视图控制器。因此,父视图控制器决定了子视图控制器视图的大小。但是父视图控制器不能直接链接到子视图控制器视图。如果你再读一遍,保持我的观点,你就会明白。
    • 添加 viewCtrlA.view 作为 viewCtrlB.view 的子视图(使用addSubview:)不会改变 viewCtrlA 对其视图的所有权。这是another Apple documentation link。除其他事项外,还解释了 UINavigationController 的层次结构:The topmost view controller’s view is placed in the navigation controller’s view hierarchy(在另一个控制器视图中显示的控制器视图示例)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2018-02-03
    • 2012-06-11
    • 1970-01-01
    相关资源
    最近更新 更多