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