簡體   English   中英

具有3個UIViewController子視圖的UIScrollView

[英]UIScrollView with 3 UIViewController subviews

我正在嘗試創建具有3個UIViewController子視圖的UIScrollView。 我已經做過一些研究,看來這個問題的答案提供了一個不錯的解決方案。 設置UIScrollView以便在3個視圖控制器之間滑動 ,但是我不確定。 我下載了示例代碼,回答者將其很好地發布在https://github.com/gneil90/CustomContainerViewController上 ,我的問題如下:

BViewController *bViewController = [[BViewController alloc]init];
[self addChildViewController:bViewController];
[self.scrollView addSubview:bViewController.view];
[bViewController didMoveToParentViewController:self];

CViewController *cViewController = [[CViewController alloc]init];
CGRect frame = cViewController.view.frame;
frame.origin.x = 320;
cViewController.view.frame = frame;

[self addChildViewController:cViewController];
[self.scrollView addSubview:cViewController.view];
[cViewController didMoveToParentViewController:self];

self.scrollView.contentSize = CGSizeMake(640, self.view.frame.size.height);
self.scrollView.pagingEnabled = YES;

示例項目中的代碼立即初始化兩個UIViewControllers。 有什么辦法可以延遲加載它們/是否可以提供某種形式的性能增強? 如果我的兩個視圖控制器下載了數據,除非用戶實際上正在查看這些屏幕,否則我不希望下載這些數據,但是通過這種初始化,用戶似乎似乎很快就在瀏覽這兩個屏幕。

您可以使用UIScrollView委托方法,在執行操作時僅初始化第一個視圖控制器。 對於其余的視圖控制器,您可以創建屬性。 UIScrollView委托方法scrollViewDidScroll請執行以下操作-

// Check at what index, to second VC or third VC
if (some condition, you can define this based on scroll postion) {

// Check if second view controller
    if (!self.cViewController) {
        cViewController = [[CViewController alloc]init];
        CGRect frame = cViewController.view.frame;
        frame.origin.x = 320;
        cViewController.view.frame = frame;
    }
// similarly for third 
}

使用此視圖控制器時,將根據需要對其進行初始化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM