2011-02-17 71 views
0

我想在導航控制器中佔用整個屏幕的UITableView。我有一個較小的自定義UIView,它需要從底部向上滑動,將桌面視圖擠壓100像素。自定義視圖需要是靜態的,而不是在用戶瀏覽tableview時移動。我被告知不要讓2個UIViewControllers(VC)在同一個屏幕上管理視圖。多個UIViewControllers同時

目前,我的AppDelegate添加一個子視圖從一個VC,然後加載用的tableview和自定義視圖其窗口

[自addSubview:tablviewcontroller.view]。 [self addSubview:customViewController.view];

這應該如何實施?

回答

0

我的構造方式如下: 有一個UIViewController子類,它的視圖佔據了整個屏幕。它將有兩個子視圖。第一個子視圖:包含您的表視圖控制器的UINavigationController的視圖。 第二個子視圖:自定義的UIView。

最初是否將UINavigationController的框架設置爲主視圖控制器視圖的全部邊界以及屏幕可見區域下方的自定義視圖框架。

當您需要向上滑動視圖時,請使用UIView動畫通過降低高度並更改自定義UIView的框架來更改UINavigationController視圖的框架,方法是將它的y座標更改爲框內。

0

好的。您需要一個導航控制器,其根視圖是一個表視圖。然後,通過用戶輸入,您可能希望此表格視圖上移100個像素,而另一個視圖則位於底部。當另一個視圖停留在那裏時,用戶可以繼續使用表格視圖。

這裏是我會怎麼做:

創建一個通用視圖控制器(讓我們稱之爲NavigationWithAuxiliaryViewController)。此類的根視圖覆蓋了您的所有應用程序窗口。

該視圖有一個UINavigationController的實例作爲其屬性,如navController。它還有一個UIView(用於其他視圖)作爲其屬性(例如,auxView)。將另一個視圖置於底部。但是,這個視圖默認是隱藏的。此外,UINavigationController的根視圖框架覆蓋整個視圖。

當您決定擠壓桌面視圖時,修改UINavigationController的frame屬性。做這樣的事情(不是這個醜陋雖然):

if (slideViewOn) { 
    [UIView beginAnimations:@"slideUp" context:nil]; 
    navController.view.frame = CGRectMake(0, 0, 320, 260); 
    auxView.hidden = NO; 
    [UIView commitAnimations]; 
} else { 
    [UIView beginAnimations:@"slideDown" context:nil]; 
    navController.view.frame = CGRectMake(0, 0, 320, 480); 
    auxView.hidden = YES; 
    [UIView commitAnimations]; 
} 

擠了整個導航/表的東西,最簡單的方法是修改導航控制器的整體框架,這就是爲什麼你需要一個單獨的視圖(在導航控制器之外)的其他視圖。

相關問題