没有NavigationController的UIVableView

时间:2013-05-13 09:50:12

标签: ios ipad uitableview

我将数据结构化为树(并在UITableView中显示),我希望通过使用UINavigationController并将子视图推送到堆栈来显示它的方式。问题是我的UITableView(在iPad应用中)仅占屏幕的1/6(​​有UINavigationController处理此应用中的其他全屏iPad屏幕,因此使用{ {1}}控制表的级别是好方法。)

是否有一种简单的方法可以在不使用NavigationController的情况下获得改变TableView级别的良好视觉效果?现在我只是更改数据源并重新加载数据,但这会像屏幕上的闪烁一样(用户无法真正看到,数据的结构是树状的)。

我想创建一些NavigationController然后只是设置一个表的调整大小(从全宽到0,我们要离开的TableView,从0到另一个的同时)只是为了制作类似segue效果的东西 - 但我不确定这是否是一个好方法。

2 个答案:

答案 0 :(得分:1)

您可以将reloadSections:withRowAnimation:UITableViewRowAnimationLeftUITableViewRowAnimationRight一起使用,而不是默认reloadData。这看起来就像你正在寻找的推动力。

参考:http://developer.apple.com/library/ios/documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableView/reloadSections:withRowAnimation

答案 1 :(得分:0)

您可以尝试此代码(在设置正确的值之后:))

__block CGRect frame = tableView.frame;
    [UIView animateWithDuration:0.5 animations:^{
          frame.origin.x -=tableView.frame.size.width;
    } completion:^(BOOL finished) {
        frame.origin.x = yourViewThatContainsTheTable.frame.size.width
        tableView.frame = frame;
        [tableView reloadData];
        [UIView animateWithDuration:0.3 animations:^{
            frame.origin.x = 0;
            tableView.frame = frame;
        }];
    }];

基本上,如果你使用的是UIView的子类,你可以使用[UIView animateWith...]方法来执行简单的动画,或者你可以使用CAAnimations / CABasicAnimation / CAAnimationGroup / CAKeyframeAnimation在UIView的子类上进行更复杂的动画。

如果您想要UIViewController的自定义转换,您可以使用CATransition。