0

我在 UINavigationController 上嵌入了一个 UITableViewController。这个 tableView 是 NSFetchedResultsController 的一个实例。我需要在 NavigationController 的顶部栏和 TableViewController 之间添加一个 Toolbar,但我不知道该怎么做(我什至不知道是否可能)。我想像 Apple 对他们的 WWDC 应用程序所做的那样(除了他们没有在 NavigationController 中嵌入 TableViewController)。我需要在栏上有一些控件来驱动 NSFetchedResultsController。

有些人建议有类似问题的人使用 UITableView 而不是 TVC,但我确实需要一个 TVC 作为 NSFetchedResultsController 的实例。

关于如何做到这一点的任何想法?我必须以编程方式进行吗?如果是这样,怎么做?

顺便说一句,我的目标是带有故事板和 ARC 的 iOS6+。

苹果的 WWDC 应用程序

4

6 回答 6

6

我更喜欢的方法是在外部使用 a UIViewController,包含您的工具栏和一个包含表格的容器视图。然后在一个单独的表格中构建您的表格,UITableViewController并使用嵌入 segue 将其连接到容器视图中。总体而言,我认为这使代码更加模块化且更易于遵循,因为高级结构在情节提要中进行了布局。

使用嵌入 segue 的步骤如下:

  1. 按住 Control 从容器视图拖动到要嵌入的视图控制器,然后选择“嵌入”选项。
  2. 在属性检查器中给嵌入 segue 一个标识符。
  3. 在父prepareForSegue方法中配置表视图控制器,检查您的 segue 标识符。

在我的VCollectionViewGridLayout库中有一个示例。查看排序和筛选示例项目。

于 2013-07-24T05:15:30.423 回答
2

技术说明 TN2154:UIScrollView 和 Autolayout提供了另一种解决方案:

请注意,您可以通过在视图和滚动视图的子树之外的视图(例如滚动视图的超级视图)之间创建约束,使滚动视图的子视图看起来浮动(不滚动)在其他滚动内容之上。

也就是说,即使滚动视图(例如表格视图)修改了子视图的框架,自动布局引擎也会在下一次布局传递时将其重置。

于 2014-10-14T21:49:22.060 回答
1

你需要使用 UIViewController,然后在 storyboard 里面添加工具栏和 NSFetchedResultsController 类的 tableView 实例

于 2013-07-24T04:54:24.400 回答
0

您可以制作任何 UIView 的 topBar,然后将其作为 tableHeaderView 传递。它可能会帮助你。

于 2013-07-24T04:49:06.103 回答
0

使用UIViewController而不是仅仅UITableViewController在您可以轻松放置其他控件的地方,而不仅仅是UITableView.

希望这可以帮助。

于 2013-07-24T05:24:20.500 回答
0

您可以使用 UITableViewController(保留 UIRefreshControl 支持和避免键盘等细节)。您只需将工具栏嵌入到普通视图中并将其放置在 tableHeaderView 中。然后实现这个滚动视图委托方法来锁定。

#pragma mark - UIScrollViewDelegate

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGRect rect = self.toolbarContainerView.frame;
    rect.origin.y = MIN(0,scrollView.contentOffset.y + scrollView.contentInset.top);
    self.toolbarContainerView.frame = rect;
}

请注意,如果您还使用节标题,则必须将这些视图发送到 tableHeaderView 后面,否则它们将漂浮在 tableHeaderView 上。

于 2015-08-15T00:30:52.987 回答