【问题标题】:Conveniently convert a View Controller object to Table View Controller during design time (Storyboard)在设计时方便地将 View Controller 对象转换为 Table View Controller(故事板)
【发布时间】:2013-04-21 21:19:12
【问题描述】:

我知道我可以删除原来的 View Controller 并将 Table View Controller 放在 Storyboard 中的位置,但这需要我重新建立前后视图控制器之间的关系。

有没有更简单或更方便的方法在设计时动态转换对象的类型?这似乎是一个非常常见的任务(至少在我自己的项目中),我想在 Xcode 中有一个选项。

【问题讨论】:

    标签: xcode uiviewcontroller storyboard uitableview uistoryboard


    【解决方案1】:

    以下内容并不能完全回答问题,但我认为它可能会回应问题的意图。

    用表视图控制器和表视图替换常规视图控制器和视图的最简单方法是将表视图控制器从对象菜单拖到画布的空白部分,创建一个新场景。如果表格视图场景应该是您应用的第一个视图,请将指向视图控制器场景的箭头拖动到新场景。现在,如果您不需要旧视图控制器中的任何内容,只需将其删除即可。

    见教程here

    但是,如果您希望能够从表格视图向下钻取到详细视图,那么您真正想要的可能是导航控制器。导航控制器对象默认创建一个表视图场景作为它的根视图控制器。

    【讨论】:

      【解决方案2】:

      我所做的是在 IB 中创建一个 UITableViewController,用文本编辑器打开 Storyboard,然后将里面的所有节点从 UIViewController 复制到 UITableViewController。

      我认为通过这种方式删除重要内容的风险较小。

      在复制section对象之前,确保两个tableviews(UIViewController和UITableViewController)具有相同的属性集,例如:静态或动态单元格、样式(普通或分组)等。

      【讨论】:

      • 这是唯一对我有用的将 TableViewController 转换为普通 ViewController 的方法。 (其实有点难过)
      • 我通过在文本编辑器中简单地将 更改为 从 TableViewController 转换为 ViewController,它就可以工作了。
      【解决方案3】:

      据我所知,Xcode 中没有可让您执行此操作的 UI。但是,您可以在 xml 编辑器中打开故事板文件(激活版本编辑器将执行此操作)并将节点的名称从 <viewController ...> 更改为 <tableViewController ...>。不要忘记还将结束标记更改为</tableViewController>

      【讨论】:

      • 我在最新的 Xcode (5.1) 上试了一下,它似乎验证失败并且无法打开。没有调查原因。
      • 你确实需要做一些额外的调整,比如去掉<tableViewController ...>位中与tableView相关的所有参数。然后完美运行。
      【解决方案4】:

      在 Xcode 中,打开“实用程序”窗格(从右侧显示),单击“身份检查器”,然后在“自定义类”区域中,选择不同的类。但是请注意,这不会更改链接到控制器中的视图。您需要删除视图并添加 UITableView。然后可能必须建立一些委托连接。

      我已经多次完成了您所描述的操作。有时我删除目标并重新开始;有时我会按照我的描述进行操作并“手动”转换。

      【讨论】:

      • 在尝试进行相反的转换(TableViewController->ViewController)时,我可以删除表格视图,但我无法放入新的常规视图。我不得不求助于破解 XML。
      猜你喜欢
      • 1970-01-01
      • 2021-02-18
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多