2011-05-09 28 views
0

對不起,想問一個簡單的問題。可可/ iPad插入新視圖...我在做什麼錯了

我有我的初始視圖加載在主視圖控制器(TestViewController)。計劃是用另一個控制器(PageOneViewController)的視圖替換該視圖。這兩個觀點都在同一個Nib中,但是與他們各自控制器中的網點相關聯。

當涉及到運行程序,我按下按鈕,視圖消失,但沒有任何東西取代它。我一定誤解了一些東西。根據我的理解,它應該工作。我究竟做錯了什麼?

@class PageOneViewController; 

@interface TestViewController : UIViewController { 

} 

- (void) addPageOne; 
- (IBAction) pressButton:(id)sender; 

@end 

...

#import "TestViewController.h" 
#import "PageOneViewController.h" 


@implementation TestViewController 

- (IBAction)pressButton:(id)sender { 

[self addPageOne]; 

} 

- (void) addPageOne { 

PageOneViewController *pageOne = [PageOneViewController alloc]; 
[self.view removeFromSuperview]; 
[self.view insertSubview:pageOne.view atIndex:0]; 
[pageOne release]; 

} 

- (void)dealloc 
{... 

...

@interface PageOneViewController : UIViewController { 

IBOutlet UIView *view; 

} 

@property (nonatomic, retain) UIView *view; 

@end 

...

#import "PageOneViewController.h" 

@implementation PageOneViewController 

@synthesize view; 

@end 

回答

1

調用removeFromSuperview導致不再顯示第一視圖。然後在第一個視圖頂部添加第二個視圖,但由於視圖1仍未顯示,用戶看不到任何一個視圖。你應該保持第一個視圖可見並且只是用第二個視圖覆蓋它,或者最好有一個空白的superview,它包含view1或view2作爲子視圖,這取決於程序需要哪個視圖。

+0

我已經做了一些調查,它看起來像pageOne.view是== NULL。不知道爲什麼。我已經將它重新鏈接到UIView outlet,但沒有喜悅。我期望這是非常基本的東西。 – Oliver 2011-05-09 19:47:29

+0

分配後,您似乎並未初始化pageOne。 – 2011-05-09 19:49:10

+0

哎唷!但是,將該行修改爲:PageOneViewController * pageOne = [[PageOneViewController alloc] initWithNibName:@「TestViewController」bundle:nil]; ... pageOne.view保持== NULL。 – Oliver 2011-05-09 20:07:20