在UITableViewController中添加tableview后面的视图

时间:2014-05-28 23:29:46

标签: ios objective-c uitableview github uiscrollview

我试图在TableViewController中的tableview下面添加这个自定义控件: https://github.com/zogieosagie/RMEIdeasPullToSortControl

在创建者给出的示例中,控件是使用ViewController和添加的tableview实现的,但我想在TableViewController中使用它。我已经创建并初始化了它,如示例中所示,但我不能让它显示在桌子后面。有什么想法吗?

以下是我的tableview上方控件的屏幕截图:https://www.dropbox.com/s/ojfpacxelcy9cqm/Photo%20May%2028%2C%208%2057%2035%20PM.png

以下是viewDidLoad方法中的代码:

[self.tableView setBackgroundColor:[UIColor clearColor]];

    self.rmeideasPullDownControl = [[RMEIdeasPullDownControl alloc] initWithDataSource:self delegate:self clientScrollView:self.tableView];
    self.sortTitlesArray = [[NSArray alloc] initWithObjects:@"Listed from A - Z", @"Listed from Z - A", @"Brand value: HIGHEST - LOWEST", @"Brand value: LOWEST - HIGHEST", @"Founded: OLDEST - NEWEST", @"Founded: NEWEST - OLDEST", nil];


    CGRect originalFrame = self.rmeideasPullDownControl.frame;

    self.rmeideasPullDownControl.frame = CGRectMake(0.0, 45.0, originalFrame.size.width, originalFrame.size.height);

    //It is recommended that the control is placed behind the client scrollView. Remember to make its background transparent.
    //[self.view insertSubview:self.rmeideasPullDownControl belowSubview:self.tableView];
    [self.tableView addSubview:self.rmeideasPullDownControl];
    [self.tableView sendSubviewToBack:self.rmeideasPullDownControl];

3 个答案:

答案 0 :(得分:1)

表视图控制器不适合管理除表视图之外的任何内容。在表视图控制器中,视图控制器的内容视图是表视图。

您不应尝试将其他视图添加为表视图的子视图。

这两件事合起来意味着你无法做你想做的事。

相反,您应该创建一个常规的UIViewController。在故事板中,将容器视图添加到视图控制器的内容视图中。创建一个UITableViewController作为单独的场景,然后从容器视图控制拖动到表视图控制器。这将设置一个嵌入segue,因此您的表视图控制器将成为常规视图控制器的子视图。现在,您可以对主视图控制器的内容视图执行任何操作,包括在表视图后面添加其他视图。

答案 1 :(得分:0)

你的意思是你在故事板上使用表视图控制器吗?或者你的意思是你的支持代码是UITableViewController的子类吗?

之前我没有使用过这个项目,但我猜你在故事板上使用的是Table View Controller,在这种情况下,没有RMEIdeasPulldownControl附加的后备视图(顶层视图是UITableViewController) )。如果您查看示例,则需要将其附加到scrollview(如表视图),但需要将其插入到视图中(如UIView)

如果你的意思是第二个,那么我不确定,UITableViewControllers是UIViewControllers的子类,并且非常相似,所以我无法想象由此引起的任何麻烦。

答案 2 :(得分:0)

不可能直接使用,但您可以使用相关的故事板创建UIViewControllerClass UIViewController

  • 在层次结构中添加MyUIView,然后在UITableView
  • 旁边添加MyUIView
  • 附加UITableView的数据源和代理,并根据您的要求使用MyUIView