iOS 7中的searchdisplaycontroller和tableview偏移不一致的问题

4
我有一个表格视图在一个RectEdgeAll视图控制器中,以及一个搜索栏作为其表格视图的标题。当我开始搜索时,搜索栏会动画化并定位到屏幕顶部的正常位置,但是表格视图不会跟随它,它仍然停留在搜索之前的同一位置,导致两个视图之间存在空隙。如何使它与搜索栏一起动画?
我已经尝试过在搜索开始时更新表格视图的contentOffset,但它甚至没有移动。
尝试了表格视图和搜索栏的两种方式:代码和故事板。
- (void)viewDidLoad
{
    [super viewDidLoad];

    self.tableView.dataSource = self;
    self.tableView.delegate = self;

    //self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    self.searchBar.delegate = self;
    self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];
    self.searchController.delegate = self;


}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.view addSubview:self.tableView];
    self.tableView.tableHeaderView = self.searchBar;
}

搜索之前:

在此输入图片描述

搜索之后:

在此输入图片描述


请查看此页面:http://myioscodingtips.blogspot.ca/2013/10/uisearchdisplaycontroller-in-ios6-ios7.html - The Guardian
1个回答

0

我的问题通过在viewDidLoad函数中添加以下两行代码得到解决:

[self.view addSubview:self.tableView]; self.tableView.tableHeaderView = self.searchBar;

如果我使用

 [self.tableView setFrame:CGRectMake(0, 0, 320, 400)];

设置表视图的框架并将这些行放在viewdidappear函数中,我的当前视图控制器有一个导航控制器,这个表视图会在导航控制器后面,但如果我把这些行放在viewdidload中,表视图就从导航控制器下方开始。不知道为什么会发生这种情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接