我有很大的UITableViewController,包含文本字段。我需要在屏幕底部显示我的pickerView。 pickerView的问题是当滚动表时滚动(因为我将它作为子视图添加到tableView中)。我看到的唯一选择是将此pickerView添加到窗口:
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
[window addSubview:view];
然而,不确定这一点,它看起来像一个黑客。 iOS6 +使用安全吗?有没有人有一个更优雅的解决方案,可以将pickerView添加到tableView的底部并使其粘在底部?
在故事板之前,我总是使用通用的UIViewController而不是UITableViewController,但是我当前的项目使用了故事板和静态表视图,所以我不能使用通用的UIViewController。我对UITableViewController不满意的主要原因是因为它的tableView是根视图,并且你可能会运行一些令人讨厌的问题(包括这个)。例如,您不能将任何视图置于中心顶部,因为将视图添加为子视图将以将此视图放置在表格内容中而不是上方结束。因此,活动指示器和其他自定义视图不能保持在中心,因为如果滚动tableView,那么这些视图也将滚动。在窗口中添加顶视图的解决方案是从代码开始的,但是你仍然无法通过故事板添加它。
答案 0 :(得分:1)
第一个问题你应该问自己:你真的需要一张桌子吗?使用滚动视图可能会好得多,具体取决于您的表包含的内容以及其内容的动态性。
下一步:如果您需要找一张桌子并且也需要选择器,那么您想要固定在屏幕底部,那么我建议如下:
UIViewController
contollerWithPicker
和一个容器视图tableContainer。 UITableViewController
myTableController
。 myTableContoller
作为表的数据源。两者都很好。有时一个更容易实现和维护,有时另一个。 但是,不要尝试将表视图与外部的修复UI元素混合,并且在同一视图中独立于表。
........... 如果它位于屏幕顶部,在桌子上方,那么您可以将选择器放在表格的标题视图中。