1

我有一个小应用程序,它在主屏幕上有几个按钮,当单击这些按钮时,它们会加载到新视图中,这一切都很好:

- (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];

}

但不高兴,有点新手,所以任何帮助都比欢迎!

4

1 回答 1

1

您的showMaps:方法创建了一个视图控制器,但不保留它。如果您希望它继续存在,您将需要保留该 viewController 的所有权。我建议在您的主视图控制器上添加一个属性 - 包含该showMaps:方法的那个。下面的示例代码:

主视图控制器.h

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

主视图控制器.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
于 2010-07-27T13:41:04.217 回答