【问题标题】:Shifting UITableView down (UITableViewController)下移 UITableView (UITableViewController)
【发布时间】:2011-09-04 17:44:07
【问题描述】:

我只是想知道是否可以将UITableView 向下移动页面,例如 50 像素。我知道如果我使用 UIViewController 然后在顶部添加一个表格视图,这通常会起作用,但我能做到这一点并仍将其保留为 UITableViewController 吗?

【问题讨论】:

  • 问题没有意义再解释一下?您所说的“将其保留为 UITableViewController”是什么意思
  • 我的意思是,如果我有一个 UIViewController 并添加一个 TableView,我可以定位表格视图。但是,当使用 UITableViewController 时,我不知道如何将表格向下移动,因为当您在 .xib 文件中选择它时,x 和 y 坐标不可编辑。
  • 有什么原因你不能用 UITableView 子视图切换到 UIViewController 吗?它为您提供了更多的灵活性。

标签: iphone ios objective-c uitableview


【解决方案1】:

我遇到了同样的问题,上面的答案没有用。这样做了:

[self.tableView setContentInset:UIEdgeInsetsMake(50,0,0,0)];

【讨论】:

  • 谢谢!!完美运行!
  • 但是仍然可以在插入区域上滚动。如何让它无法滚动?
  • 对于 Swift,它看起来像这样:self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0)
  • 有效答案对我有用,在 Swift4.1、Xcode 9.3 中,它更改为 self.tableView.contentInset = UIEdgeInsets(top: 84, left: 0, bottom: 0, right: 0)
【解决方案2】:

我的解决方案是重写tableViewcontroller的方法viewWillLayoutSubviews

- (void) viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];
    self.tableView.frame = CGRectMake(0,0,CGRectGetWidth(self.view.frame),300);
}

在不断变化的方向和任何情况下都非常适合我

【讨论】:

  • 我认为的最佳解决方案
  • 对于 Xamarin iOS,这是可行的。接受的答案没有。
【解决方案3】:

UITableView 实际上是UIScrollView。这意味着您可以将UITableView 滚动到您想要的位置。 This 是以前的链接,它向您展示了如何执行此操作,包括示例代码和讨论。

编辑: 为了将 WHOLE 表格视图向下移动,只需使用:

float yOffset = 50.0f; // Change this how much you want!
tableview.view.frame =  CGRectMake(tableview.view.frame.origin.x, tableview.view.frame.origin.y + yOffset, tableview.view.frame.size.width, tableview.view.frame.size.height);

希望有帮助!

【讨论】:

  • 是的,明白这一点,我不知道如何向下滚动它,我想知道如何将整个表格移到视图下方,以便在顶部为某些文本留出一些空间。感谢您的回复!
  • 您将其添加到您希望调用它的位置。所以如果你想在一开始就调用它,在用户做任何事情之前,把它放在viewDidLoad:方法中。如果你想让它用按钮绑定,把它放在按钮IBAction等中。
  • 如果他把它放在viewDidLoad上:整个view很可能会有很不愉快的“跳跃”效果……
  • 这对我不起作用,但它似乎是一个不错的解决方案,也是迄今为止最好的答案,谢谢!我决定我只是要解决这个问题,并保持现状。非常感谢
【解决方案4】:

由于表格视图由 UIScrollView 支持,因此您可以使用内容偏移量来移动。

  self.tableView.contentOffset = CGPointMake( x,  y);

您可能想要包装在 UIView 动画中

【讨论】:

    【解决方案5】:

    如果您尝试在表格顶部添加 UI 元素,为什么不直接将其设置为 tableHeaderView

    UILabel *someLabel;
    
    // configure label
    
    self.tableView.tableHeaderView = someLabel;
    

    【讨论】:

      【解决方案6】:

      如果您需要在 tableview 后面(或顶部)有一个视图,那么您必须改为子类化 UIViewController 并在之后添加一个 UITableView。 另一种解决方案可能是设置表格的标题视图 (reference),但在这种情况下,请记住此视图将与表格一起滚动。 有关UITableViewController 的限制的更多信息请参阅本文:“Clean table view code”。

      【讨论】:

        【解决方案7】:

        Swift 2.2:

        将 UITableViewController 中的 tableView 向下移动:

        let edgeInsets = UIEdgeInsetsMake(20, 0, 0, 0)
        self.tableView.contentInset = edgeInsets
        

        【讨论】:

          【解决方案8】:

          UITableViewController 实际上是一个 UIViewController,唯一的优点是它为您提供了一些方法来覆盖并对表格操作很有用。所以你可以做任何你想做的事

          检查一下,一旦你知道 UITableViewController 到底是什么,你就会为所欲为

          http://cocoawithlove.com/2009/03/recreating-uitableviewcontroller-to.html

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-10-22
            • 2012-05-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多