【发布时间】:2013-10-09 17:40:09
【问题描述】:
我在加载应用程序时创建了一些逻辑,我可以根据我在 plist 中设置的一些值从 3 个不同的视图加载。
这就是我的代码的样子
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//sets context for coredata
CoreDataController *coreDataController = [CoreDataController sharedManager];
coreDataController.managedObjectContext = self.managedObjectContext;
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
PrefsController *prefsController = [[PrefsController alloc] init];
NSDictionary *prefsDictionary = [prefsController readPrefs];
NSLog(@"%@", prefsDictionary);
NSString *projectListBoolString = [prefsDictionary objectForKey:@"ProjectListAvailable"];
NSString *installsBoolString = [prefsDictionary objectForKey:@"InstallsAvailable"];
NSString *finishinBoolString = [prefsDictionary objectForKey:@"FinishingAvailable"];
if (([projectListBoolString isEqualToString:@"T"]) && ([installsBoolString isEqualToString:@"F"]) && ([finishinBoolString isEqualToString:@"F"])) {
self.getProjectListViewController = [[GetProjectListViewController alloc] initWithNibName:@"GetProjectListViewController" bundle:nil];
self.window.rootViewController = self.getProjectListViewController;
[self.window makeKeyAndVisible];
}
else if (([projectListBoolString isEqualToString:@"T"]) && ([installsBoolString isEqualToString:@"T"]) && ([finishinBoolString isEqualToString:@"T"])) {
self.currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil];
self.window.rootViewController = self.currentProjectListViewController;
[self.window makeKeyAndVisible];
}
else {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
}
return YES;
}
我希望能够加载和卸载 UIViewControllers(包括通过使用按钮等从内存中删除。
我不想使用基于导航的控制器,因为我希望视图是静态的或单独的,如果这更有意义的话。
如果有人可以向我展示一些示例代码,以将新的 UIViewController 加载到窗口并删除旧的 UIViewController,这将不胜感激。
但是我不确定正确的处理方法,甚至代码的外观。
任何帮助将不胜感激。
【问题讨论】:
-
你真的应该考虑使用导航控制器来处理你在应用程序中的导航。这些将确保你的视图控制器的 loadView 和 unloadView 将被自动调用。我无法想象另一种方法是正确的方法。按钮可用于将这些视图控制器推送到导航控制器上,从而创建到视图的导航。
-
我同意@TotumusMaximus。我认为最好的方法是在主窗口中有一个 rootViewController 并使用导航控制器推送其他视图。看看这里stackoverflow.com/questions/19241205/…
-
我倾向于同意你们的观点,但它不是一个以导航为中心的应用程序。有 3 个视图,它们在任何时候都具有重要性。因此,应用程序委托能够加载 3 个视图控制器中的任何一个作为第一个/rootvew。
-
我会尽快为您添加一个没有导航控制器的答案;)
标签: ios objective-c uiview uiviewcontroller