2014-03-24 37 views
0

我有相当大的UITableViewController组成的文本字段。我需要在屏幕底部显示我的pickerView。 pickerView的问题是当表滚动时滚动(因为我把它作为子视图添加到tableView中)。我看到的唯一选择是将此pickerView添加到窗口中:如何在使用UITableViewController时将pickerView粘贴到底部?

UIWindow *window = [[UIApplication sharedApplication] keyWindow]; 
[window addSubview:view]; 

但是,不确定,它看起来像一个黑客攻击。使用iOS6 +安全吗?有没有人有一个更优雅的解决方案,将pickerView添加到tableView的底部并将其粘贴到底部?

在故事板之前,我总是使用泛型UIViewController而不是UITableViewController,但是我当前的项目使用了故事板和静态表视图,所以我不能使用泛型UIViewController。我不熟悉UITableViewController的主要原因是它的tableView是根视图,并且有一些可能运行的令人讨厌的问题(包括这个问题)。例如,您不能将任何视图置于顶部,因为将视图添加为子视图会将此视图置于表格内容中而不是以上。所以活动指标和其他自定义视图不能停留在中心位置,因为如果您滚动tableView,那么这些视图也会滚动。从代码中添加顶视图的解决方案的工作,但你仍然无法通过故事板添加它。

回答

1

第一个问题,你应该问自己:你真的需要一张桌子。根据你的表格包含什么以及它的内容是如何动态的,你可能会更好地使用滚动视图。

下一页:如果您需要去一张桌子和需要选择器也一样,要被固定在屏幕的底部,那么我建议如下:

  1. 创建UIViewControllercontollerWithPicker那拥有选取器和容器视图tableContainer。
  2. 仅为您的表格及其内容创建UITableViewControllermyTableController
  3. 将myTableController分配给tableContainer。
  4. 根据您的需要,您可能希望使用contollerWithPicker或myTableContoller作为表格的数据源。两者都很好。有时候更容易实施和维护,有时更容易实施和维护。

但是不要尝试将表视图与修正的UI元素混合在一起,并且不依赖于同一视图中的表。

........... 如果是屏幕顶部,在桌子上方,那么您可以将选择器放置在表格的标题视图中。

+0

使用scrollView非常好的一点。然而,为了使用ScrollView(https://developer.apple.com/library/ios/technotes/tn2154/_index.html),我们需要一些关于contentSize的代码设置。另外,当键盘显示在与tableView的合同中时,scrollView不会自动调整大小。所以,与普通的ScrollView相比,目前tableView在内部肯定有一些好东西。 – Centurion