在“下拉刷新”期间,UITableView在顶部有额外的空间

时间:2015-10-15 05:54:32

标签: ios objective-c uitableview uirefreshcontrol

我的tableview有问题。 它有一个像这样的顶部空间: enter image description here

当我打开TasksTableViewController时,问题没有显示出来。但是当我从TaskTableVC打开另一个viewcontroller时:

 FilterTasksTableViewController * fttvc = [self.storyboard instantiateViewControllerWithIdentifier:@"FilterTasksTableViewController"];
fttvc.delegate = self;
UINavigationController * navVC = [self.storyboard instantiateViewControllerWithIdentifier:@"PopoverNavigationController"];
[navVC setViewControllers:@[fttvc]];
[self presentViewController:navVC animated:YES completion:nil];

并返回到TaskTableVC,问题就出现了。 当我“拉下来补充”时,它会恢复正常。

在我的TaskTableVC代码中:

- (void)viewWillAppear:(BOOL)animated {
//other code
[self populate];
}

- (void)viewDidLoad {

 dispatch_async(dispatch_get_main_queue(), ^{

   self.refreshControl = [[UIRefreshControl alloc] init];

    self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@" "];

    [self.refreshControl addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged];

    [self setRefreshControl:self.refreshControl];

});

    [self populate];
}

- (void)populate {

TaskHandler *handler = [[TaskHandler alloc] initWithContext:_context];
NSArray *allTasks = [handler getAll];

_tasks = [self filterTasks:allTasks];

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"startDate" ascending:NO];
NSArray *descriptors = [NSArray arrayWithObjects:descriptor, nil];
_tasks = [[NSMutableArray alloc] initWithArray:[_tasks sortedArrayUsingDescriptors:descriptors]];
dispatch_async(dispatch_get_main_queue(), ^{
    [self.tableView reloadData];
    [self.refreshControl endRefreshing];
});

}

我希望你能帮我解决这个奇怪的问题。

3 个答案:

答案 0 :(得分:1)

我用代码解决了我的问题。 我认为Refresh control出了问题所以我将其移出dispatch_aysnc(dispatch_get_main_queue()并添加了[self.tableview reloadData。这解决了我的问题。谢谢大家回答。 :)

答案 1 :(得分:0)

在视图中viewWillAppear设置。

if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {

    [self setEdgesForExtendedLayout:UIRectEdgeBottom];

}

希望对你有所帮助。

答案 2 :(得分:0)

您需要确保UITableViewCell具有正确的高度。

为此,您只需实施UITableViewDelegate方法:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
  return 90.0f; //CHANGE TO YOUR DESIRED HEIGHT. 
}

我希望这会有所帮助。