iOS學習筆記——使用ChildViewController,iosviewcontroller

來源:互聯網
上載者:User

iOS學習筆記——使用ChildViewController,iosviewcontroller

之前在使用TableView的時候遇到過問題,需要使用另外的TableViewController來先存放TableView,原有的View則使用ViewContainer來引用TableViewController。此時是第一回接觸一個ViewController中使用另一個ViewController。後來在開發的時候遇到另外的問題也需要用到ChildViewController,本來這類問題可以使用自訂的View來解決。在開發Android的時候自訂的View可以指定用某個布局檔案,但是iOS的不能給自訂的View指定布局檔案,靠代碼去實現控制項布局就很大難度,於是就搜尋ViewContainer相關問題。

    使用ViewContainer其實也是在ViewController中添加一個子的ViewController。在可視化StoryBoard中可以用ViewContainer,但是用純程式碼控制的話,還是用ChildViewController比較方便。

    ChildViewController是iOS5出來的新東西,iOS5給UIViewController添加了5個方法和一個屬性,圍繞著這個ChildViewController

// 方法addChildViewController:removeFromParentViewController: transitionFromViewController:toViewController:duration:options:animations:completion:willMoveToParentViewController:didMoveToParentViewController:// 屬性@property(nonatomic,readonly) NSArray *childViewControllers

在我看來以上的方法屬性可以望文生義,方法的作用依次是添加ChildViewController、去除ChildViewController,切換ChildViewController,後面的兩個方法是有事件性質的,在ChildViewController切換到主的ViewController和切換完之後觸發的。

但我現在的應用情境是需要把ChildView放到ScrollView裡面,實現翻頁的效果。

在StoryBoard中添加了兩個ViewController,一個是主的裡面添加了UIScrollView,另外添加的是作為添加到ParentViewController的ChildViewController。

先把ChildView的StroyBoard中添加一下命名,那麼在主ViewController中構造ViewController時就可以按照StoryBoardID來構造了。

由於UIScrollView實現翻頁的功能,所以要對它作以下配置

self.scrollView.contentSize=CGSizeMake(self.view.frame.size.width*pagecount, self.scrollView.frame.size.height);self.scrollView.pagingEnabled=true;

添加ChildViewController的代碼如下所示

SunRealAQIViewController *realCV2=[[self storyboard]instantiateViewControllerWithIdentifier:@"test123"];realCV2.view.frame=CGRectMake(self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height);[self addChildViewController:realCV2];[self.scrollView addSubview:realCV2.view];

先是構造ChildViewController,再設定它的frame屬性,這時第一頁,第一頁可以不設定,但第二頁第三頁就需要去設定,第三行則是調用UIViewController的addChildViewController的方法添加ChildViewController裡面,最後則是把ChildView的視圖添加到主視圖的指定位置,在這裡是要添加到ScrollView裡面去,所以就是調用[self.scrollView addSubver:]的方法,需要添加多個相同的ChildViewController到ScrollView裡面肯定用迴圈

    for (int i=0; i<pagecount; i++){    SunRealAQIViewController *realCV2=[[self storyboard]instantiateViewControllerWithIdentifier:@"test123"];    realCV2.view.frame=CGRectMake(self.view.frame.size.width*i, 0, self.view.frame.size.width, self.view.frame.size.height);    [self addChildViewController:realCV2];    [self.scrollView addSubview:realCV2.view];} 

就這樣子開啟了使用ChildViewController的大門!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.