2014-01-30 46 views
0

我測試了一些我想在我的應用中使用的東西。我有一個UiViewController在故事板上有一個UIScrollView - 我現在想要添加其他viewControllers到這個scrollView並在它們之間滑動。UIScrollView和Storyboard

我想在故事板中添加一個視圖到這個UIScrollView中。可能嗎?

我試圖沿着線的東西:

MYViewController *viewOne = [self.storyboard instantiateViewControllerWithIdentifier:@"myView"]; 

    [self.scrollView addSubview:viewOne.view]; 

我已經設置了滾動大小比屏幕更大,當主視圖負荷,我可以看到有一個滾動視圖(滾動條顯示),但我的viewController不在裏面。

任何人有任何想法?

回答

0

我發現問題:

我沒有分配和初始化我的viewController。糟糕!

這是正確的代碼:

BaseViewController *viewOne = [[BaseViewController alloc]init]; 
    viewOne = [self.storyboard instantiateViewControllerWithIdentifier:@"myView"]; 
    [self.scrollView addSubview:viewOne.view]; 
1

您發佈的代碼仍然是不正確的,在幾個級別。

首先,你不應該爲視圖控制器使用alloc/init。您需要使用initWithNibName:bundle:(從nib文件創建視圖控制器)或instantiateViewControllerWithIdentifier:從故事板加載視圖控制器。

其次,除非您使用在iOS 5中添加並在iOS 6中進行了大幅改進的父/子視圖控制器支持,否則不應將視圖控制器的視圖添加爲另一個視圖控制器的子視圖。如果您執行的操作然後做各種事情將無法正常工作:自動旋轉,低內存警告,背景通知等。可以出錯的事情清單是無界的。

最簡單的方法是將容器視圖作爲框架添加以容納您的子視圖控制器,然後將控件從容器視圖拖放到您想要設置爲子視圖的場景中。這導致IB設置和「嵌入」繼續。 Embed嵌入可以完成將一個視圖控制器的內容託管到另一個視圖控制器所需的全部內務,無需代碼。

您可以在滾動視圖的內容視圖中創建一個容器視圖,然後它會正常工作。

+0

嗨Duncan, 看到我以前的SO問題:http://stackoverflow.com/questions/21453513/using-one-instance-of-a-viewcontroller-class-in-storyboard/21453949?noredirect=1#comment32374767_21453949 我雖然UiScrollView會更容易得到我正在尋找的效果? – Tander

+0

要添加:我想要一個滾動視圖,所以我可以在我需要的視圖之間滑動並使用segmentcontrolt o直接轉到用戶想要的視圖 – Tander

+0

Tander,你應該真正做的是使用UIPageViewController。這就是你想做的一切,並且比你想要做的更加整齊。您可以將它設置爲在頁面之間滑動,或者進行頁面捲曲。您還可以輕鬆添加頁面控件,讓用戶點擊切換,頁面視圖控制器爲您管理頁面控件。更清潔和更熟悉的用戶界面。 –