我正在查看Apple的Date Cell(Date Cell Link)示例项目,我对 MyTableViewController 中的 Scene Dock 有疑问。为什么场景中的项目额外项目(如选择器和完成)位于第一响应者旁边,退出和我的表视图控制器?如何才能做到这一点?另外,这有什么用?
此图像显示我所指的Scene Dock。不介意标题,我重命名了项目。
此图显示 MyTableViewController 的场景轮廓,我的表格视图旁边显示选择器和完成按钮控制器,第一响应者和退出,而不是我的表视图控制器。
此图显示了我的表视图控制器的扩展轮廓,其中还找到了 Picker 对象。但我的表视图控制器中无法找到完成按钮。
此图片显示了连接 Picker 和完成按钮的代码。没有什么特别之处。
答案 0 :(得分:1)
当我在控制器的场景中删除UIDatePicker(不在单元格中)时,内联的DatePicker仍然有效。
我认为此示例旨在支持iOS 6.1或更早版本,以将UIDatePicker显示为外部滑入视图,因此需要在控制器中进行IBOutlet连接。
希望这会有所帮助。
答案 1 :(得分:0)
通常,MyTableViewController
不应该是UITableViewController
类型,而是其超类UIViewController
。这通常是必需的,因为UITableViewController
根据定义具有设置为表视图的主view
属性。然后很难将其他视图放入此视图中。
但是,使用UIViewController
,您可以添加任意数量的视图。在这种情况下,这对于容纳按钮和拾取器是必要的。表视图控制器功能仍然可以通过手动添加UITableViewDataSource
和UITableViewDelegate
协议并覆盖适当的方法来实现。
但是,Apple在此处显示可以将其他视图放在与主view
(表视图)相同的级别上。这无疑令人困惑。我通常更喜欢将非标准视图作为子视图添加到普通view
的{{1}}。
答案 2 :(得分:0)
您可以将选择器视图中的内容从库中拖到场景停靠站,以便将其添加到那里。
至于这样做的效用,我不知道那会是什么。
在这种情况下,我认为拾取器和完成按钮是代码的编写者遗留下来的,他们试验想法并忘记删除它们。要验证是否只删除了选择器视图和完成按钮,看看是否一切仍然有效。