0

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

当“历史”功能被禁用时,我想隐藏历史按钮并相应地向上移动我的 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] ;
}
4

1 回答 1

0

关闭自动布局并将调用放在 viewWillAppear: 中是正确的答案。关闭自动布局后,UITableView 会正确向上移动并停留在那里。此外,不需要调用 [[self view] setNeedsLayout] 和 [dataTable setNeedsLayout]。

于 2013-04-29T04:26:45.570 回答