使自定义 UI 元素不在 TableViewController 中滚动

Posted

技术标签:

【中文标题】使自定义 UI 元素不在 TableViewController 中滚动【英文标题】:Make Custom UI Element not scroll in TableViewController 【发布时间】:2012-04-10 02:04:20 【问题描述】:

我制作了一个自定义 UIPickerView,我希望将其隐藏,然后在按下按钮时将其动画到屏幕上。我通常对此没有问题。我只是将视图作为子视图添加到 self.view 但问题是我试图将它设置在 tableViewController 中。当我将它添加到 self.view 时,它最终只是被粘在 tableviewcontroller 上并随着 tableview 滚动......这不是我想要的。 我尝试将它添加到 self.view.window 但这不起作用......我只是无法在任何地方看到我的自定义元素。

我觉得这很简单,但我只是错过了一些东西......

【问题讨论】:

那为什么还要使用 UITableViewController 呢? 【参考方案1】:

听起来您希望此选择器在需要时向上滑动屏幕然后消失。可能有很多方法可以做到这一点,但第一件事是它不应该是视图控制器的子视图。更有可能它应该是视图控制器父视图的子视图。

我会寻找最好的方式来改变观点,也许是模态的,然后朝那个方向发展。

【讨论】:

【参考方案2】:

听起来你的表类继承自 UITableViewController。如果是这种情况,将选择器视图添加到 self.view 会将其添加到 tableView - 这就是它坚持使用它的原因。我会尝试让你的基类继承自高于 UITableViewController 的东西(也许是 UIViewController;你可以像 NSObject 一样高),然后给它两个属性 - 一个用于pickerView,一个用于 tableView。因此,当您将 pickerView 添加到 self.view 时,它会将其添加到表中,而不是作为其子项。

【讨论】:

以上是关于使自定义 UI 元素不在 TableViewController 中滚动的主要内容,如果未能解决你的问题,请参考以下文章

如何使自定义标签中的代码块仅在第一次调用该标签时运行?

使自定义容器可迭代

使自定义viewcontroller覆盖导航栏

使自定义 Airflow 宏扩展其他宏

使自定义 QWidget 可选

如何使自定义对象可迭代?