2013-02-21 121 views
1

我使用Xcode 4.6來構建iOS 6.x tabbar應用程序並使用Storyboard的。在每個選項卡視圖中,添加UIScrollView並與其中放置的任何元素進行交互都沒有問題。uiscrollview in viewcontroller in modal segue

但是......當我點擊一個按鈕以使用模態塞格轉換到故事板中的新視圖時,滾動視圖在模態視圖中不起作用。

實施例:

兩個TestViewController.h和TRViewController.h包含類似的代碼這樣:

@property (strong, nonatomic) IBOutlet UIScrollView *scroller; 

在viewDidLoad方法上均TestViewController.m和TRViewController.m:

[_scroller setScrollEnabled:YES]; 
[_scroller setContentSize:CGSizeMake(320, 1000)]; 

然後在IB中,插座正確連接到視圖:

enter image description here

所以我的代碼被複制/跨越IB,.h和.M同爲每個視圖。在一個區域工作,但不在另一個區域工作。除此之外,什麼,我認爲唯一的其他塊可能是有關我的問題可能是從SEGUE:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"trSegue"]) {   
    TRViewController *_trVC = segue.destinationViewController; 
    _trVC.delegate = self; 
    } 
} 

我只是失去了一些東西那麼完全明顯?我在想,一旦我看到解決方案,這將是一個前進的時刻......

想法/評論?

在此先感謝! - Drew

回答

0

嗯......我發現如果我只是將模式從模態改爲推模......它可以很好地工作,不需要任何額外的調整/調整。我想我只是走這條路,而不是進一步搞砸它。

這就是說,我仍然很想找到一種方法來做到這一點(如果可能的話)。

1

我想通了。你必須把你的UIScrollView放在另一個空的UIView中。您的層次結構將看起來像這樣在你的界面生成器:

enter image description here

的原因是是因爲一個模式賽格瑞顯示您的內容的方式。當你進行push segue時,它實際上會將ViewController推到導航堆棧的最頂層,而使用模式segue它會改變屏幕上顯示的內容。我不確定這是否會導致蘋果拒絕你的應用程序,但它的工作原理。

+0

謝謝!我遇到了類推問題,並通過這樣做解決了問題。當返回包含scrollview-in-a-UIView的VC時,它已經搞亂了 - 我通過在viewWillAppear()中手動將內容偏移設置爲0,0來解決此問題。 – Desty 2013-08-28 15:10:36