Ios UITableView在“运行”期间在顶部有额外的空间;下拉以刷新“;

Ios UITableView在“运行”期间在顶部有额外的空间;下拉以刷新“;,ios,objective-c,uitableview,uirefreshcontrol,Ios,Objective C,Uitableview,Uirefreshcontrol,我的tableview有问题。 它的顶部有这样一个空间: 当我打开TasksTableViewController时,问题没有显示出来。但当我从TaskTableVC打开另一个viewcontroller时,如下所示: FilterTasksTableViewController * fttvc = [self.storyboard instantiateViewControllerWithIdentifier:@"FilterTasksTableViewController"]; fttv

我的tableview有问题。 它的顶部有这样一个空间:

当我打开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,问题就出现了。 当我“下拉到refesh”时,它会恢复正常

在我的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];
});

}

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

视图中的
视图将出现
设置

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

    [self setEdgesForExtendedLayout:UIRectEdgeBottom];

}

希望它对您有所帮助。

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

为此,您可以简单地实现
UITableViewDelegate
方法:

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

我希望这有帮助。

我用代码解决了我的问题。
我认为刷新控件有问题,所以我把它从调度aysnc(调度获取主队列()
中移出,并添加了
[self.tableview reloadData
。这解决了我的问题。谢谢大家的回答。:

你在
-(CGFloat)tableview:(UITableView*)中重复了什么tableView RowAtIndexPath的高度:(NSIndexPath*)indexPath;
UITableView委托方法?我认为您的UITableViewCell的高度不正确。您好,您只需打开translucent=True,或者只需添加一个额外的视图b/w表和主视图。当前,您的表是视图中的第一个子视图。UIRectedGetToom将其更改为UIRectEdgeTop