动画UITableView替换 - 在动画完成之前不显示数据

时间:2012-09-10 13:03:04

标签: ios uitableview uiviewanimationtransition

我有UISplitViewController,它在主视图中以及详细视图中显示UITableView。

当用户选择主视图表中的某个项目时,我会在详细信息视图中重新加载该表格,并且我希望在页面卷曲的情况下对其进行动画处理。

这是我正在使用的代码:

UITableView *newTableView = [[UITableView alloc] initWithFrame:self.tableView.frame style:UITableViewStylePlain];

[newTableView reloadData]; // ineffective attempt to load data prior to transition

[UIView transitionFromView:self.tableView
            toView:newTableView
            duration:0.8
            options:UIViewAnimationOptionTransitionCurlUp
            completion:^(BOOL finished)
                {
                    [newTableView reloadData]; // needed
                    [self setTableView:newTableView];
                    [newTableView release];
                }];

转换发生,但'显示'UITableView只是一个普通的无人居住的UITableView,除非我强制重新加载完成块中的数据。然后,如果我这样做,我会转换到一个空表,然后重新加载以显示预期的数据 - 不是很好。

如何才能使显示的表格显示所需的数据?感谢。

1 个答案:

答案 0 :(得分:0)

我想这应该可行。

UITableView *newTableView = [[UITableView alloc] initWithFrame:self.tableView.frame style:UITableViewStylePlain];

[self setTableView:newTableView]; //until the table is set, there is no use reloading it
[newTableView reloadData]; // it should reload now and then animate

[UIView transitionFromView:self.tableView
            toView:newTableView
            duration:0.8
            options:UIViewAnimationOptionTransitionCurlUp
            completion:^(BOOL finished)
                {
                    [newTableView reloadData]; // needed
                    [self setTableView:newTableView];
                    [newTableView release];
                }];

你在[self setTableView:newTableView];之上遗失reloadData。希望能帮助到你。快乐的编码:)