我正在尝试将子视图添加到UITableView的父视图中,以便在滚动UITableView时不会移动子视图。 当我将子视图添加到UITableView时,它会随着用户滚动操作的表格移动。
到目前为止,我的方案是在UITabBarController上有3个UINavigationControllers。 每个都有一个UITableViewController。 我想在各个控制器的屏幕上添加一个子视图。但是,我不希望将新的子视图添加到整个应用程序中,如下所示:
[[[UIApplication sharedApplication] keyWindow] addSubview:newView];
当我将一个新控制器推入堆栈或弹出一个控制器时,我希望子视图移动并消失,它位于UITableView之上。保持当用户滚动UITableView时,新的子视图位于其位置而不移动。 因此,UITableView和新的子视图处于同一级别。
由于
答案 0 :(得分:1)
将您的子视图添加到tableview ..
实现委托方法scrollViewDidScroll。 在scrollViewDidScroll上,只需设置所需子视图的所需中心。
答案 1 :(得分:1)
有两种方法:
首先,要将视图添加到用户滚动时保留的表视图,如果您的表只有一个部分,则可以为该部分添加标题。例如,这会在表格视图中添加一个纯蓝色UIView
作为标题:
- (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;
}
其次,如果您有多个部分,但这个技巧不起作用,并且您想要使用UIViewController
而不是UITableViewController
,请将标题添加到顶部该控制器的视图,并将tableview添加到该视图的底部。您需要确保为tableview设置(a)IBOutlet
(通常为tableView
设置属性,以避免混淆); (b)将视图控制器指定为此tableview的数据源和委托。
第三,如果您希望此标题出现在应用中的每个场景上,则另一种方法(在iOS5 +应用中)是使用视图控制器包含,创建包含标题的容器视图,然后将应用的第一个场景添加为该视图容器的子视图。这并不难,但如果你是一个新开发者,我可能会劝阻你不要这样做。我已经完成了它并且效果很好,但并不适合所有人。
第四,如果您的应用使用导航控制器,您可以自定义导航栏以呈现自定义外观。这一切都取决于你试图用标题完成的事情。