我目前正在开发一个ipad项目并找到了这个。 所以这是我的结构
我将uiviewcontroller子类化为customVC,就像这样
@protocol customizedVCDelegate
-(void)viewclosed:(UIView *)view oldviewcontroller:(UIViewController *)oldvc newvcname:(UIViewController *)newvc;
@end
@interface customizedVC : UIViewController {
id <customizedVCDelegate> delegate;
}
@property (assign) id <customizedVCDelegate> delegate;
@end
在demoipadappDelegate中,这是切换视图的主干,我采用了协议并实现了viewclosed功能。 我得到了很多视图,每个视图都会从nib加载。所以我在demoipadappDelegate中加载第一个
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//loading openvinview
openingVC *vc = [[openingVC alloc] initWithNibName:@"openingview" bundle:nil];
vc.delegate = self;
[window addSubview:vc.view];
[window makeKeyAndVisible];
return YES;
}
要切换视图,我将在每个viewcontroller中触发viewClosed。例如,我得到了VC1并希望转向VC2。我在vc1中触发了一个viewClosed。由于vc1的委托是demoipadappDelegate,因此所有vc的委托都是demoipadappDelegate。所以demoipadappDelegate将收到该事件并执行此操作。这是在demoipadappDelegate
-(void)viewclosed:(UIView *)view oldviewcontroller:(UIViewController *)oldvc newvcname:(UIViewController *)newvc;
{
self.currentVC = (customizedVC *)newvc;
self.currentVC.delegate = self;
[window addSubview:self.currentVC.view];
[view removeFromSuperview];
[oldvc release];
}
我预计memery的用量会下降。它没有。 我还检查了每个vc,我已经手动释放任何我分配的东西。事实并非如此。
抱歉,我的英语很差,我希望我的解释清楚