2013-04-30 33 views
1

在我的应用程序中,我有一个表视图。比方说,例如我在桌面视图中有10行值得数据,顶部有一个导航栏。我以纵向模式启动应用程序。我看到10行。XCode表视图从肖像旋转到风景隐藏第一行

现在我将iPad旋转到横向模式。我只看到9行。 1行隐藏在顶部导航工具栏下方。

我把它旋转回肖像,但我仍然只能看到9行。 1行仍然隐藏在导航栏下方。我拖动表视图并查看第一行。所以我的问题是,即使当我从肖像变为风景时,我也会做出什么变化才能看到所有10行,反之亦然。我试图改变tableview的setFrame值,但没有运气。如果您需要更多信息,请询问。谢谢。

+0

尝试编辑您的问题,很难遵循。 – 2013-04-30 20:27:10

+0

@SpaceDust。我改变了它。这有帮助吗? – RookieAppler 2013-04-30 20:35:46

+0

导航栏是来自导航控制器堆栈还是您只是将导航栏拖到视图中? – 2013-04-30 20:44:26

回答

0

我没有一个完整的答案给你,我不知道为什么你的第一行是在导航栏下面,也许你应该提供额外的代码或屏幕截图。

在最糟糕的情况下,我会做tableview分组,并安排-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section 或我会从界面生成器中的对象拖放到视图上方的虚拟视图,这种方式第一行不能在导航下酒吧。

总而言之,如果您必须在纵向和横向上显示所有行,您可以检测方向更改并使行高变小或变大。

添加通知在viewWillAppear中功能

-(void)viewWillAppear:(BOOL)animated{ 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];} 

的方向变化通知此功能取决于方向

- (void)orientationChanged:(NSNotification *)notification{ 
    [self.tableview reloadData]; 
} 

更改行高度和收缩行时的方位改变

//row height 
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) 
{ 
    //portrait mode view 
    return 40.0; //play with the value according to your needs 
} 
else if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) 
{ 
    //landscape view 
    return 30.0; //play with the value according to your needs 
} 

} 
+0

谢谢。但它没有奏效。我的第一行仍然隐藏。 – RookieAppler 2013-04-30 22:06:55

+0

它适用于:UIEdgeInsets inset = UIEdgeInsetsMake(44,0,0,0); \t \t self.tableView.contentInset = inset;我的第一排不再隐藏。但有时候我会在顶部排空。但如果我在风景和肖像之间移动,它会消失,我可以看到所有10行。 – RookieAppler 2013-05-01 15:42:23

+0

我不知道为什么它发生它不应该,祝你好运:) – 2013-05-01 16:59:29