1

我正在尝试将子视图添加到 UITableView 的父视图,以便在 UITableView 滚动时有一个不会移动的子视图。当我将子视图添加到 UITableView 时,它会随着用户滚动操作的表格一起移动。

到目前为止,我的场景是我在 UITabBarController 上有 3 个 UINavigationController。每个都有一个 UITableViewController。我想在各个控制器的屏幕上添加一个子视图。但是,我不希望像这样将新的子视图添加到整个应用程序中:

[[[UIApplication sharedApplication] keyWindow] addSubview:newView];

当我将一个新控制器推送到堆栈或弹出一个时,我希望子视图随着它位于其顶部的 UITableView 一起移动和消失。保持这样一个事实,即当用户滚动 UITableView 时,新的子视图位于其位置而不移动。使 UITableView 和新的子视图处于同一级别。

谢谢

4

2 回答 2

1

将您的子视图添加到 tableview..

实现委托方法scrollViewDidScroll。在 scrollViewDidScroll 上,只需设置所需的子视图中心即可。

于 2012-12-24T06:30:43.450 回答
1

几种方法:

首先,要将视图添加到用户滚动时保留的表格视图,如果您的表格只有一个部分,您可以为该部分添加标题。例如,这会UIView在 tableview 中添加一个纯蓝色作为标题:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, 50)];
    view.backgroundColor = [UIColor blueColor];
    return view;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 50;
}

其次,如果你有多个部分,但是,这个技巧不起作用,你会想要使用 aUIViewController而不是 a UITableViewController,将你的 header 添加到该控制器视图的顶部,并在底部添加一个 tableview看法。您需要确保IBOutlet为 tableview 设置 (a) an (通常设置为名为 的属性tableView,以避免混淆);(b) 将视图控制器指定为此 tableview 的数据源和委托。

第三,如果您希望此标头出现在应用程序的每个场景中,另一种方法(在 iOS5+ 应用程序中)是使用视图控制器包含,创建一个包含您的标头的容器视图,然后将您的应用程序的第一个场景添加为子视图那个视图容器。这并不难,但如果你是一个新开发者,我可能会劝阻你不要尝试。我已经做到了,效果很好,但并不适合所有人。

第四,如果您的应用使用导航控制器,您可以自定义导航栏以呈现您的自定义外观。这一切都取决于你试图用标题完成什么。

于 2012-12-24T06:37:31.587 回答