首次加载iOS7 SDK时部分隐藏的tableview

首次加载iOS7 SDK时部分隐藏的tableview,ios,iphone,objective-c,uitableview,Ios,Iphone,Objective C,Uitableview,这个问题与 ,但有一个细微的区别。解决方案如下: if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) self.edgesForExtendedLayout = UIRectEdgeNone; 如果tableView嵌入到navigationController上,它确实对我有效,但如果tableView不在此navigationController层次结构下(例如,tableView嵌入到控制器上,

这个问题与 ,但有一个细微的区别。解决方案如下:

    if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
    self.edgesForExtendedLayout = UIRectEdgeNone;
如果tableView嵌入到navigationController上,它确实对我有效,但如果tableView不在此navigationController层次结构下(例如,tableView嵌入到控制器上,此控制器是另一个基于navigationController的控制器的子视图),则此解决方案失败


因此,我不知道如何解决这个问题。如果您能帮我一把,那将对我有很大帮助。谢谢。

我相信您需要将这些行移到
UINavigationController
下的控制器上

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
    self.edgesForExtendedLayout = UIRectEdgeNone;
编辑:作为一个黑客,你可以手动设置你的桌面位置如下

CGFloat tableTop = 44.0f; //iOS7
if ([[[UIDevice currentDevice] systemVersion] compare:@"7.0" options:NSNumericSearch] == NSOrderedAscending) {
    tableTop = 44; //iOS6
}

CGRect frame = self.tableView.frame;
self.tableView.frame = CGRectMake(frame.origin.x, tableTop, frame.size.width, frame.size.height);

如果你正在使用故事板,你可以在顶部布局指南中添加一个约束,如本文所示:可悲的是,我没有使用故事板…所有这些都是代码。也许这是针对我的情况的最佳解决方案,它确实很好用,谢谢