【问题标题】:UITableView with static cells does not appear带有静态单元格的 UITableView 不会出现
【发布时间】:2012-01-28 05:08:06
【问题描述】:

我使用 Storyboards(标签视图模板)创建了一个新的 Xcode 项目。我在情节提要中添加了几个视图控制器,并希望使用一个带有静态单元格的 UITableView。我创建了它,但是当我在模拟器中运行时,单元格没有出现。除了这个故事板文件之外,我没有更改项目中的任何内容。我正在显示情节提要编辑器和正在运行的模拟器的屏幕截图。标签显示,因此视图加载正确。我将背景颜色设置为灰色,这样我就可以看到 talbeview 正在加载。所有单元格都设置为可见。我将他们的样式更改为基本并编辑了标签,并添加了一个披露指示符,仅此而已。

【问题讨论】:

    标签: ios uitableview xcode-storyboard


    【解决方案1】:

    您想尝试使用 TableViewController 而不是通用视图控制器吗?

    【讨论】:

    • 虽然我不知道如何让表格视图工作,如果它只是一个更大视图的子视图,就像在我的屏幕截图中一样。如果我将一个 Table View Controller 拖过来并让它成为整个屏幕,那就可以了。但如果我想混合和匹配其他 UI 元素,我不知道。我不知道如何将它连接到表格视图控制器。
    • 只有将表格视图控制器嵌入到作为大视图子视图的容器视图中时,您才能进行混合和匹配。
    • 我遇到了同样的问题,这是因为当从菜单中拖动 UINavigationController 时,该死的通用 UIViewController 默认为表视图的父级。为什么苹果默认不加载 UITableViewController? >_
    【解决方案2】:

    如 Ray Wenderlich 的网站上所述(在这篇文章中:Beginning Storyboards in iOS 5 Part 2,“工作中的添加播放器屏幕”部分):

    关于静态单元格的另一件事,它们只适用于 UITableViewController。故事板编辑器将允许您将它们添加到 常规 UIViewController 中的 Table View 对象,但这不会 在运行时工作。原因是 UITableViewController 提供了一些额外的魔法来处理数据源 静态细胞。 Xcode 甚至阻止你编译这样的项目 错误消息:“非法配置:静态表视图是 仅在嵌入 UITableViewController 实例时有效”。

    有同样的问题,但这让事情变得清晰......

    【讨论】:

    • 那么有什么办法可以在 UIViewController 中使用故事板的 UITableView 中使用静态单元格而不将 UITableView 嵌入故事板中的 UITableViewController 中?
    • 从我在 Ray 的部分中读到的内容是,由于检查和非法配置警报,这被阻止了。所以虽然我不确定我会赌上我的钱:不。
    • @KarenAnne....不要使用静态单元格。只需使用动态 UITableView 并使容器 UIViewController 成为委托,然后使用您必须填充 UITableView 的任何静态数组。
    • XCode 实际上让我可以在 UIViewController 中使用 tableview 编译和运行我的应用程序。那只是一张空白的桌子。非法配置错误消息会有所帮助
    • 面对一个空白表,我也能够毫无错误地编译。
    【解决方案3】:

    使用静态表格视图时不要实现以下任何方法:

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    }
    

    【讨论】:

    • 这意味着您必须完全删除实现,而不仅仅是插入空方法:)
    • 是的,但我想知道如何摆脱现在说实现不完整的 Xcode 警告?
    • @wcochran 我会检查您是否在界面中声明了这些方法,或者您的类是否不是 UITableViewController 的子类。在这种情况下,这两种情况都可能导致“实施不完整”警告。
    • 非常感谢!!作为 iOS 开发的新手,我一直在关注教程,但似乎没有人提到这一点……当然,它们主要使用动态表而不是静态表。
    • 当您必须在静态单元格上实现展开转场时很有用。
    【解决方案4】:

    您可以添加一个容器视图并在该容器中嵌入一个 UITableViewController。然后您可以在新控制器中管理您的静态单元格。

    【讨论】:

    • 哇!这就是为什么!我绞尽脑汁想弄清楚,为什么前开发者将 UITableViewController 放在 Container 中!
    【解决方案5】:

    我遇到了同样的问题,对我有用的解决方法是使用 performSegue. 呈现静态 UITableViewController 子类 使用 [[self navigationController] present...] 呈现 old way 不会导致静态表查看正确加载其单元格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多