Ios 如何在UIScrollview中嵌入UITableView

Ios 如何在UIScrollview中嵌入UITableView,ios,uitableview,uiviewcontroller,uiscrollview,scroll,Ios,Uitableview,Uiviewcontroller,Uiscrollview,Scroll,如何在UIViewController(包含作为子视图的tableview)中执行以下操作 我最初有一个显示预览部分(UIView)的UIViewController 我还在下面添加了一个UITableView(和一个搜索栏) 使用此设置,我的滚动区域很小(只有预览部分下方的静态区域) 我如何修改我的代码以便 1) 我可以向上滚动整个页面,即预览部分和tableview将一起向上滚动 2) 当搜索栏到达顶部(导航栏下方)时,整体滚动将停止(请参见屏幕截图),但UITableView中的内容仍然

如何在UIViewController(包含作为子视图的tableview)中执行以下操作

我最初有一个显示预览部分(UIView)的UIViewController

我还在下面添加了一个UITableView(和一个搜索栏)

使用此设置,我的滚动区域很小(只有预览部分下方的静态区域)

我如何修改我的代码以便 1) 我可以向上滚动整个页面,即预览部分和tableview将一起向上滚动 2) 当搜索栏到达顶部(导航栏下方)时,整体滚动将停止(请参见屏幕截图),但UITableView中的内容仍然可以滚动

编辑:

添加了UIScroll视图的代码。然而,对我来说,一切都没有改变。我的代码有什么问题

//setup scroll view
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

//Search
UISearchBar *tempBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 120 + 20, 320, 44)];
self.sBar = tempBar;
[tempBar release];
self.sBar.delegate = self;
self.sBar.tintColor = [UIColor colorWithHexString:@"#b6c0c7"];
self.sBar.placeholder = @"Search for FB and DM friends";

[scroll addSubview:sBar];

//setup tableview
UITableView *tempTable = [[UITableView alloc]initWithFrame:CGRectMake(0,144 + 20 + 20 ,320,self.view.frame.size.height - 144 - 20 - 20 - 44)];
self.tagFriendsTableView = tempTable;
self.tagFriendsTableView.delegate = self;
self.tagFriendsTableView.dataSource = self;
[tempTable release];

//Add the scroll view to the parent view
[scroll addSubview:self.tagFriendsTableView];

scroll.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
[self.view addSubview:scroll];
[scroll release];

您必须将UITableView嵌入屏幕大小减去导航栏的UIScrollView中。将UIScrollView背景设置为clearColor,以使UITableView上方的内容保持可见。

我有一个解决方案

只使用tableView就足够了

  • 将“预览视图”作为tableView的HeaderView

  • 将“搜索栏”作为tableView的节标题视图


  • 您可以将其完美地设置为:)

    无需任何花哨或定制,使用
    UITableView
    并使用
    UITableViewDelegate
    中的
    tableView:viewForHeaderInSection:
    将预览窗格设置为
    tableHeaderView
    并将搜索字段设置为节头

    在滚动事件期间,表格标题将从顶部滚动。
    节标题浮动并在该节可见的整个时间内保持可见。如果您只有一个节,则节标题将始终存在。

    是的,您可以使用“tableView:ViewForHeaderSection”。

    或者您可以执行以下步骤: 1.禁用表格视图的滚动。 2.将高度约束设置为tableView和与其连接的IBOutlet。 3.重新加载数据之前,请计算表格高度<代码>heightConstraint.constant=(SingleTableViewCell的高度)*行数

    scroll.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
    

    它无法滚动,因为contentSize不够大。您需要将scrollView顶部内容的长度增加到总长度

    嗨,谢谢你的回复。我为UIScroll视图添加了一些代码,但它对我不起作用,即与我最初的实现没有任何更改。你能帮我看一下我编辑过的问题吗?我在那里添加了uiscrollview代码。提前感谢你真的应该使用DBD/adali的解决方案,它比我的要好:)有人能给我解释一下吗??please@RaviOjha,请看下面DBD的答案。
    //setup scroll view
    UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    
    //Search
    UISearchBar *tempBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 120 + 20, 320, 44)];
    self.sBar = tempBar;
    [tempBar release];
    self.sBar.delegate = self;
    self.sBar.tintColor = [UIColor colorWithHexString:@"#b6c0c7"];
    self.sBar.placeholder = @"Search for FB and DM friends";
    
    [scroll addSubview:sBar];
    
    //setup tableview
    UITableView *tempTable = [[UITableView alloc]initWithFrame:CGRectMake(0,144 + 20 + 20 ,320,self.view.frame.size.height - 144 - 20 - 20 - 44)];
    self.tagFriendsTableView = tempTable;
    self.tagFriendsTableView.delegate = self;
    self.tagFriendsTableView.dataSource = self;
    [tempTable release];
    
    //Add the scroll view to the parent view
    [scroll addSubview:self.tagFriendsTableView];
    
    scroll.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
    [self.view addSubview:scroll];
    [scroll release];
    
    scroll.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);