将UIPickerViews添加到包含其他元素的视图中

时间:2010-06-04 10:16:46

标签: iphone objective-c cocoa-touch uipickerview

Newbie Cocoa Touch问题:

我的目标是使用UIPickerView和UIButton接口。

选择器需要一个委托和dataSource,我最初将其作为一个单独的PickerController类来实现正确的协议。但是,我现在不确定如何使用界面构建器来链接所有内容。

如果我有一个单独的.xib文件用于PickerController(其中只有一个UIPickerView),并在主控制器中添加PickerController视图作为子视图,UIPickerView会正确显示,但是UIButton(在主.xib文件)不是。就像添加PickerController视图占据整个窗口并遮盖主视图一样。

我尝试删除单独的.xib文件,而是将UIPickerView直接添加到主.xib文件中。但是,使用该配置,我不确定如何设置委托和dataSource,因为文件的所有者(主控制器)与我编写的<UIPickerViewDataSource, UIPickerViewDelegate>类(PickerController)不同。

对以下内容的一些帮助会很棒:

  • 每个UIPickerView应该有一个单独的类吗?
  • 每个UIPickerView我应该有一个单独的.xib文件吗?
  • 如果委托和dataSource与文件所有者属于不同的类,我该如何连接它们?
  • 我可以在主视图中添加子视图而不会干扰/隐藏主视图中的元素吗?

1 个答案:

答案 0 :(得分:1)

可以做你想做的事,但它远远超出了达到预期结果的最快路径。如果你是一个新手,我现在坚持使用简单的路径,因为Cocoa Touch已经足够了解学习曲线。

因此。最快的路径是让您的主视图子类化PickerController类。然后,您可以创建IB文件,使用主视图类作为文件的所有者,并连接数据源和代理。

我猜你的StackOverflow得分是一个有经验的开发人员,他开始使用iPhone开发。上面最快的方法可能会闻起来很有趣,因为子类化并不是真正的感觉。感觉你应该能够组合控制器,将它们混合在一起构建UI。这是可能的,但如果你刚开始的话,最终会有很多工作和一点头痛。我发现在大多数情况下,采用更优雅方法的美学回报并不值得额外付出。