2010-07-27 61 views
1

我已經從主屏幕上有幾個按鈕,一個小的應用程序,在一個新視圖點擊這些按鈕的負載,這一切工作正常:從後/完成按鈕刪除的UIView

- (IBAction)showMaps:(id)sender {  

    MapViewController *viewcontroller = [[MapViewController alloc] initWithNibName:@"MapView" bundle:nil]; 
    [[self view] addSubview:viewcontroller.view]; 

    [viewcontroller release]; 

} 

問題來了當MapView類加載我已經創造了MapViewController.h文件中的新IBAction爲:

- (IBAction)showHome:(id)sender; 

而且還MapViewController.m文件中的這個動作:

- (IBAction)showHome:(id)sender { 
    [self.view removeFromSuperview]; 

} 

但是沒有喜悅,對於這個新手來說,所有的幫助都比歡迎!

回答

1

您的showMaps:方法創建一個視圖控制器,但不保留它。如果你想保留它,你將需要保留viewController的所有權。我建議在你的主視圖控制器上添加一個屬性 - 包含showMaps:方法的屬性。下面的示例代碼:

MainViewController.h

@interface MainViewController : UIViewController { 
    MapViewController * mapViewController; 
} 
@property (nonatomic, retain) MapViewController * mapViewController; 
- (IBAction)showMaps:(id)sender; 
@end 

MainViewController.m

@implementation MainViewController 

@synthesize mapViewController; 

- (void)dealloc { 
    [mapViewController release]; 
    [super dealloc]; 
} 

- (IBAction)showMaps:(id)sender { 
    self.mapViewController = [[[MapViewController alloc] 
           initWithNibName:@"MapView" 
             bundle:nil] autorelease]; 
    [[self view] addSubview:mapViewController.view]; 
} 

@end 
+0

太謝謝你了... – jimbo 2010-07-27 15:17:09

+0

無後顧之憂! ':)' – 2010-07-27 16:38:36

+0

可能不得不讓你應對所有我得到的其他問題:) – jimbo 2010-07-29 08:52:23