2011-04-08 76 views
0

所以我設法加載另一個視圖時,有人按下按鈕,但它加載到高。 `我不知道爲什麼會發生這種情況。差別正是頂級酒吧高。這是我的代碼: 在委託我有:在狀態欄中繪製的視圖

- (void)flipToAbout { 
AboutViewController *aaboutView = [[AboutViewController alloc] initWithNibName:@"AboutViewController" bundle:nil]; 
[self setAboutController:aaboutView]; 
[aaboutView release]; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window cache:YES]; 
[homeController.view removeFromSuperview]; 
[self.window addSubview:[aboutController view]]; 
[UIView commitAnimations];} 

在有關視圖我沒有改變anything.Please告訴我什麼是problemm .Thanks。

回答

1

問題是,您將視圖直接添加到窗口而沒有考慮導航欄。通常,如果您有導航欄,則使用導航控制器來管理視圖控制器。將視圖控制器放到導航控制器的堆棧上會導致導航控制器將該視圖控制器的視圖添加到窗口中,並且您不必擔心導航欄。但是,由於您正在手動完成此操作,因此您需要在將視圖添加到窗口後重新定位視圖。

請注意,此問題與筆尖沒有任何關係,只不過您從筆尖加載視圖。如果您以編程方式創建視圖,則會發生同樣的情況。

+1

試圖在視圖中執行此操作: - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:CGRectMake(0,20,320,460)]; if(self){//初始化代碼。 } return self; }但它什麼都不做。 – flaviusilaghi 2011-04-08 17:16:10

+0

這可能是因爲你正在從一個筆尖加載視圖,所以使用-initWithCoder:而不是-initWithFrame:來完成初始化。相反,加載'aboutView.view.frame = CGRectMake(0,20,320,460);'加載視圖後,或者在將其添加到窗口後。 – Caleb 2011-04-08 18:03:25