2011-03-16 73 views
1

我有一個簡單的應用程序,有兩個視圖控制器。他們兩個都在頂部有一個UINavigationBar,作爲頭部。第二個UIViewController顯示爲模式視圖,當用戶點擊第一個按鈕時。UIView顯示移動到頂部

當我的應用程序第一次啓動時,初始視圖並不完全覆蓋主UIView,並似乎「推」到頂端(見下圖)。 enter image description here

當我點擊「指令」按鈕,它顯示與presentModalViewController:animated:另一個視圖,並關閉模式ViewController,一切都顯示正確。

有人知道我可能會做錯什麼嗎?

我沒有在viewWillAppear中,這是我的viewDidLoad

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    if (!self.model) { 
     self.model = [[FRRSushiRiceModel alloc] init]; 
     [[self.header.items objectAtIndex:0] setTitle: @"Perfect Sushi Rice: Ingredients"]; 
    } 
} 

和我的應用程序中:didFinishLaunchingWithOptions:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  


    // Create and add the main controller (ingredients) 
    self.ingredientsController = [[FRRIngredientsViewController alloc] init]; 
    [window addSubview:self.ingredientsController.view]; 


    [window makeKeyAndVisible]; 

    return YES; 
} 

這個小項目重現此行爲: Test Case

+0

你是從一個筆尖加載還是在loadView中做所有UIView的東西? – Brian 2011-03-16 17:16:48

+0

所有視圖均使用IB創建。我根本沒有使用loadView。 – cfischer 2011-03-16 17:36:43

回答

1

我發現錯誤,夥計們。

基本上我相信系統能夠正確設置我的視圖的框架以匹配屏幕的可用部分。當你將它添加到控制器的某些控制器(如UINavigationController)時,它可以工作,或通過IB添加它。

如果以編程方式添加控制器,則需要明確設置視圖的框架。一個很好的默認值是:

[[UIScreen mainScreen] applicationFrame] 

代表應用程序屏幕的一部分:整個屏幕減去狀態欄。

3

你有沒有不要在IB中設置「想要全屏」,要麼爲UINavigationControllerUIViewController

enter image description here