2012-08-07 41 views
1

我有一個UIScrollView與多個頁面,每個包含UITableViewController(類似於提醒 - 應用程序)。 單擊這些UITableViewControllers中的每一箇中的單元格都會導致DetailViewController被推送。UIScrollView重疊彈出UIViewController

但是,當DetailViewController被彈出時,它會立即消失在UIScrollView後面,而不是順利滑走。我可以看到UIScrollView的下一頁滑開,但是當DetailViewController從最後一頁被按下時,轉換看起來很好,因爲UIScrollView上沒有可能與DetailViewController重疊的內容。

編輯

這是我如何創建視圖控制器層次(簡體):

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]; 

    } 
} 

我在這裏做錯了什麼?這種行爲是否有任何解決方法?

+1

是否將'UIScrollView'設置爲'clipToBounds'(該選項在界面生成器中稱爲「剪輯子視圖」)的超級視圖?正如你注意到的那樣,看起來'UIScrollView'可能在超視圖上運行,因爲它的尺寸非常大,並且導致你的動畫看起來很糟糕。削減它應該防止發生,但我對滾動視圖的經驗是有限的。 – 2012-08-07 13:33:25

+0

* facepalm *這正是問題所在 - 今天編碼太多。謝謝!如果您將您的評論添加爲答案,我會將其標記爲已接受且已註冊。 – 2012-08-07 13:41:38

回答

5

UIScrollView需求SuperView把有clipsToBounds設置爲true(該選項被稱爲在界面生成器Clip Subviews,如果您在建立視圖的方式。)當你注意到了,看來該UIScrollView可能運行了它superview,因爲它太大了,導致你的動畫看起來很糟糕。剪切它將保持不發生。