2

我有一个UIScrollView包含多个页面的页面,每个页面都包含一个UITableViewController(类似于 Reminders-App)。单击每个单元格中的一个单元格UITableViewControllers会导致 aDetailViewController被推送。

但是,当DetailViewController弹出时,它会立即消失在 后面UIScrollView,而不是平滑地滑开。我可以看到滑动的下一页UIScrollView,但是当DetailViewController从最后一页推送时,过渡看起来很好,因为 上没有UIScrollView可能与被解雇的内容重叠DetailViewController

编辑

这就是我创建视图控制器层次结构的方式(简化):

调度视图控制器.m:

- (void) viewDidLoad {
    // ... 
    for (int i = 0; i < 3; ++i) {
        MyTableViewController *myTableViewController = [[MyTableViewController alloc] initWithNibName:@"MyTableView" bundle:nil];

        [self.scrollView addSubview:myTableViewController];
        [self addChildViewController:myTableViewController];
        [myTableViewController didMoveToParentViewController:self];
    }

这里 tableView:didSelectCellAtIndexPath:MyTableViewController

(void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // ... 
        [self.tableView deselectRowAtIndexPath:indexPath animated:YES];

        DetailViewController* detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
        [self.navigationController pushViewController:detailViewController animated:YES];

    }
}

我在这里做错了什么?这种行为有什么解决方法吗?

4

1 回答 1

6

UIScrollView需要的超级视图已clipsToBounds设置为 TRUE(Clip Subviews如果您以这种方式创建视图,则在界面构建器中调用该选项。)正如您所注意到的,看起来它UIScrollView可能正在运行它的超级视图,因为它要大得多,这会导致您的动画看起来很糟糕。剪掉它可以防止这种情况发生。

于 2012-08-07T13:43:42.540 回答