2

複数のページがUIScrollViewあり、それぞれに が含まれていますUITableViewController(リマインダー アプリに似ています)。これらのそれぞれのセルをクリックすると、UITableViewControllersaDetailViewControllerが押されます。

ただし、がポップされると、スムーズにスライドするのではなく、DetailViewControllerすぐに の後ろに消えます。スライドUIScrollViewの次のページが見えますが、 が最後のページからプッシュされた場合、 には破棄された と重なる可能性のあるコンテンツがないため、トランジションは正常に見えます。UIScrollViewDetailViewControllerUIScrollViewDetailViewController

編集

これは、View Controller階層を作成する方法です(簡略化):

ScheduleViewController.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

必要に応じてスーパービューを TRUEUIScrollViewに設定する必要があります (この方法でビューを作成する場合、このオプションはインターフェイス ビルダーで呼び出されます) 。 、それがアニメーションの見栄えを悪くしています。それをクリッピングすると、それが起こらなくなります。clipsToBoundsClip SubviewsUIScrollView

于 2012-08-07T13:43:42.540 に答える