【问题标题】:Want to create a cool static UI but : "Static table views are only valid..."想要创建一个很酷的静态 UI 但:“静态表视图仅有效......”
【发布时间】:2012-03-05 20:32:00
【问题描述】:

我正在创建如下视图:

为此,我尝试使用 Storyboard,在其中添加 2 个 TableView(均作为“静态单元格”),然后直接从情节提要中手动添加 Cell 内容...

在我的故事板中,它看起来很棒,但是当我构建时,我得到:

en.lproj/MainStoryboard.storyboard:错误:非法配置: 静态表视图仅在嵌入时有效 UITableViewController 实例

我该如何解决这个错误?

【问题讨论】:

标签: ios uitableview static storyboard cell


【解决方案1】:

我在更改现有的自定义视图控制器时也遇到了一个问题,使其扩展了 UITableViewController。 XCode 不够聪明,不会意识到它已经符合它的要求。

您可以通过编辑故事板源代码并将<viewController ...更改为<tableViewController...来解决此问题。

原文来源:https://plus.google.com/108665969482300807329/posts/J4mCASMA3pZ

【讨论】:

  • 并且不要忘记更改结束</viewController> XML 标记,以免不匹配!
  • 我在 Xcode 5.1 上试过这个,但它不再有效。我收到以下错误:“无法打开文档“MainSoriboard.storyboard”。无法验证文档内容。”现在改成动态的,现在看来是唯一的办法了。
  • 似乎是不好的做法
  • 使用Xcode 6,需要先删除storyboard上的view,否则无法使用Interface Builder打开storyboard。
  • 仍然适用于 xcode 9...这不是一个 hack,但如果您只是不小心将一个普通控制器放到情节提要上进行了一些添加,然后意识到您已经删除了一个表视图控制器并且可以不用担心重新开始
【解决方案2】:

将 UITableViewController 添加到您的视图中。它应该包含一个 UITableView。将此定义为静态表格视图,并将其分组。添加两个部分。一个有一排,另一个有两排。再次将标签按钮和滑块添加到行中。

我不知道你为什么要在这里有两个 UITableView?

【讨论】:

  • 好吧,看来这是获得这种“风格”而不必创建自定义东西的唯一方法不是吗?
  • 可能。我不知道苹果是如何在情节提要中实现静态表功能的,但是当您尝试在 UITableViewController 之外定义它时会收到错误消息,这肯定表明他们背后有支持这种行为的代码。无论如何,我建议使用控制器来处理 UITableView,因为这样可以免费获得很多东西。
  • 太棒了!!我只是按照你说的做了,效果很好。
  • 附加说明:将视图控制器的类更改为 UITableViewController 不会 工作(与固有的自定义类相同)。 将新的 UIViewController 拖到故事中会起作用。
【解决方案3】:

在 Xcode 6 中实现此功能的唯一方法,以及 Apple 想要实现此功能的方式是将 TableViewController 嵌入到容器视图中,如果必须的话。看来您无法按照 juanignaciosl 在 Xcode 6 中描述的方式破解。

所以步骤如下:

  1. 创建表格视图控制器
  2. 将此控制器中的表视图替换为“有问题”视图控制器中的表及其所有静态单元格等

如果您的表格视图是更复杂的用户界面的一部分,并且它不是您的视图控制器的主视图,则继续如下

  1. 在您的“有问题的”视图控制器中创建一个 containerView,与您现在移动的静态表视图处于相同的位置。这也将自动创建另一个视图控制器和一个序列 - 删除它们。
  2. 左键单击或 ctrl 从容器视图拖动到包含静态表的 tableviewcontroller 并选择嵌入

这不像以前那么好,因为您的表格视图在界面构建器中的单独视图控制器中被剥离,这可能会对您现有的代码和插座产生影响。但对于大型静态表,它是动态生成所有内容的更好选择。

【讨论】:

    【解决方案4】:

    你可以让它动态,然后切换滚动:

    [yourTableName setScrollEnabled:NO];
    

    【讨论】:

    • 这就是我最终做的事情......有点笨拙,但它解决了我的问题。谢谢!
    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多