iOS:UITableview标题隐藏在视图后面向上滚动

时间:2016-05-19 06:50:10

标签: ios objective-c iphone uitableview uisearchbardisplaycontrol

我的tableview控制器中有一个自定义分段控件,tableview标题中有一个搜索栏。当我向上滚动到最后一个单元格时,tableview会反弹回来。但问题是:我的搜索栏隐藏在分段控件后面,并且视图底部会出现一个空白区域。我希望如果用户向上滚动桌面视图,它会反弹并返回到之前的位置,如第一个屏幕截图所示。

以下是我的分段控制的代码:

self.projectSegmentControl = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@"Active Projects", @"All Projects", nil]];
    [self.projectSegmentControl addTarget:self action:@selector(actionSelectProject) forControlEvents:UIControlEventValueChanged];
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenWidth = screenRect.size.width -20;
    self.projectSegmentControl.frame = CGRectMake([UIScreen mainScreen].bounds.size.width-screenWidth-5,10, screenWidth, 30.0);
    _segmentControlView = [[UIView alloc] initWithFrame: CGRectMake(0,60, screenRect.size.width,47.0)];
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    _segmentControlView.backgroundColor = [UIColor whiteColor];
    self.projectSegmentControl.backgroundColor = [UIColor whiteColor];
    [_segmentControlView addSubview:self.projectSegmentControl];
    [appDelegate.window addSubview:_segmentControlView];
    self.projectSegmentControl.selectedSegmentIndex = 0;
    CGFloat screenHeight = screenRect.size.height;
    if(screenHeight==480 || screenHeight==568)
    {
        CGPoint newOffset = CGPointMake(0, -[self.tableView  contentInset].top);
        [self.tableView setContentOffset:newOffset animated:YES];
    }

    UIFont *font = [UIFont fontWithName:@"Avenir" size:12.0f];
    NSDictionary *attributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
    [_projectSegmentControl setTitleTextAttributes:attributes forState:UIControlStateNormal];

这是tableview出现时的屏幕截图: enter image description here

当我向上滚动tableview反弹但搜索栏隐藏在分段控件后面时。

enter image description here

PS:如果需要,我会添加代码。提前致谢

1 个答案:

答案 0 :(得分:0)

上面的帖子假设你正在使用

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <LinearLayout android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/PanelName" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:textColor="@color/colorBlack" android:gravity="center_vertical" android:paddingLeft="10dp" android:text="Parking Name" android:textSize="14sp" /> <TextView android:id="@+id/PanelAddress" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:textColor="@color/colorBlack" android:gravity="center_vertical" android:paddingLeft="10dp" android:text="Parking Address blablabla Paris" android:textSize="14sp" /> </LinearLayout> <android.support.v7.widget.AppCompatButton android:id="@+id/btn_go" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="@color/colorPrimary" android:textColor="@color/colorAccent" android:layout_marginTop="30dp" android:layout_marginBottom="24dp" android:layout_marginRight="24dp" android:padding="12dp" android:text="GO !"/> </LinearLayout> (不是UITableViewController

您已在tableview的标题中添加了搜索栏。

然后以编程方式创建了一个分段控制器并添加到窗口中

UIViewController

因此,当您滚动表格时,显然标题也会随之移动。所以它被隐藏在分段控制之后。

步骤1.创建uiviewcontroller(不是uitableviewcontroller)
步骤2.在视图中添加分段控件 步骤3.在分段控件下添加静态搜索栏。 步骤4.so在滚动tableview时,不会隐藏分段控件

希望这会对你有所帮助。