2011-12-28 57 views
0

我想在僅限iOS5的iPad應用程序中編寫我自己的UITabbarController替換項。很像我在GitHub MHTabBarController上找到的那個。我閱讀代碼,發現他分配他的所有viewControllers前期:在iOS 5遏制視圖中延遲加載UIViewController

ListViewController *listViewController1 = [[ListViewController alloc] initWithStyle:UITableViewStylePlain]; 
ListViewController *listViewController2 = [[ListViewController alloc] initWithStyle:UITableViewStylePlain]; 
ListViewController *listViewController3 = [[ListViewController alloc] initWithStyle:UITableViewStylePlain]; 

NSArray *viewControllers = [NSArray arrayWithObjects:listViewController1, listViewController2, listViewController3, nil]; 
MHTabBarController *tabBarController = [[MHTabBarController alloc] init]; 

tabBarController.viewControllers = viewControllers; 

二傳手的實施看起來是這樣的:

- (void)setViewControllers:(NSArray *)newViewControllers 
{ 
    _viewControllers = [newViewControllers copy]; 
    for (UIViewController *viewController in _viewControllers) 
    { 
      [self addChildViewController:viewController]; 
      [viewController didMoveToParentViewController:self]; 
    } 
} 

setSelectIndex:的setter然後得到正確的UIViewController並呼籲addSubview自我與UIViewControllers視圖。

這讓我感到不可思議,他完全發起了三個ListviewController。我發現自己記得有關使用延遲加載實現大型scrollViews的文章,但是我無法在Google上找到任何內容,也不記得實現細節。

所以問題是,我該如何實現延遲加載,以便UIViewController將像使用關聯UIViewController的Tabbar上的用戶選項卡一樣加載。

+0

我認爲這是你的問題的答案,如果你仍然需要它:http://stackoverflow.com/a/1197838 – 2012-03-05 02:32:05

回答

0

您應該執行延遲加載。你永遠不知道UIViewController有多沉重。那麼這取決於你實施了多少。你已經有按鈕來切換標籤?如果是這樣,點擊後,只需將相應的UIViewController添加到UIView即可。當你點擊另一個時,你可以隱藏它並添加另一個UIViewController

+0

我會有按鈕切換選項卡。我記得點擊一個按鈕後,按鈕會調用一個帶索引的方法來切換視圖控制器的內容。使用索引,它將查找VC中陣列中匹配的VC(由於iOS 5的限制,該陣列已經存在)。從那裏開始,我不知道該怎麼做 - 你的意思是NSClassFromString()? – 2011-12-28 14:33:59

+0

幾個月前,我自己做了一個自定義的UITabBarController,我做了什麼,是保持對所有UIViewControllers的引用,當我需要切換時,我將刪除從UIView中顯示的那個,並添加新的。 – Peres 2011-12-28 14:51:50

+0

好的,你不會加載視圖,但你必須分配空間並初始化VC,對吧? – 2011-12-29 08:58:09