2013-04-28 66 views
0

我有一个UIViewController,在顶部有一个UIButton,在它下面有一个UITableView。上面的按钮是“历史记录”,我将其设置为用户可以打开或关闭的功能。我使用带按钮和表格的XIB设置视图控制器。在UIView中移动UITableView不会持久

当'history'功能被禁用时,我想隐藏历史记录按钮并相应地将UITableView的顶部向上移动,因此在视图的顶部没有空白区域。

当我在viewDidAppear中调用我的hideHistory:方法时,它隐藏了历史记录按钮并将表移动到我的视图顶部。

但是,在打开模式视图(向表中添加一行)然后关闭模式视图之后,表格已经移回原来的位置。将该呼叫添加到viewWillAppear:不起作用。

以下是hideHistory的代码。关于为什么桌子重置到原始位置的任何想法?

在此先感谢!

- (void)hideHistory 
{ 
    [historyButton setHidden:YES] ; 

    // move our data table up accordingly 
    CGFloat newTop = historyButton.frame.origin.y ; 

    CGRect newFrame = CGRectMake(dataTable.frame.origin.x, 
           newTop, 
           dataTable.frame.size.width, 
           dataTable.frame.size.height); 
    [dataTable setFrame:newFrame] ; 

    [[self view] setNeedsLayout] ; 
    [dataTable setNeedsLayout] ; 
} 
+0

你是说当模态被解除时,历史按钮被隐藏了吗? – 2013-04-28 18:56:14

+0

检查这是否是自动布局的效果(默认为开启)。如果是这样,你可能想在'viewWillLayoutSubviews'中做类似的事情,或者以不同的方式解决它。 – 2013-04-28 19:06:41

+0

@意义重大。谢谢!这是自动布局被启用。当我关闭它时,它就会起作用。对于我的大部分观点,我已关闭自动布局。不管出于什么原因,我都没有这个。再次感谢! – 2013-04-28 19:21:58

回答

0

关闭自动布局并将呼叫置于viewWillAppear:是正确的答案。当自动布局关闭时,UITableView正常向上移动并停留在那里。此外,调用[[self view] setNeedsLayout]和[dataTable setNeedsLayout]是不必要的。