0

我有 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,除非我强制重新加载完成块中的数据。然后,如果我这样做,我会转换到一个空表,然后重新加载以显示预期的数据 - 不是很好。

我怎样才能使显示的表格已经显示所需的数据?谢谢。

4

1 回答 1

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。希望能帮助到你。快乐编码:)

于 2012-09-10T13:08:25.463 回答