【发布时间】:2011-07-20 03:07:59
【问题描述】:
据我估计,我正在尝试做一些非常简单的事情:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
prefs = [NSUserDefaults standardUserDefaults];
BOOL IsLoggedIn = [prefs boolForKey:@"IsLoggedIn"];
if(IsLoggedIn == NO)
{
//Show login controller
LoginViewController *lvc = [[LoginViewController alloc] initWithNibName:nil bundle:nil];
[self.tabBarController presentModalViewController:lvc animated:NO];
[lvc release];
}
else if(IsLoggedIn == YES)
{
//Continue doing crap
}
// Override point for customization after application launch.
// Add the tab bar controller's current view as a subview of the window
self.window.rootViewController = self.tabBarController;
NSArray *tabs = self.tabBarController.viewControllers;
UIViewController *tbInvoice = [tabs objectAtIndex:0];
tbInvoice.tabBarItem.image = [UIImage imageNamed:@"Open-Mail.png"];
UIViewController *tbClient = [tabs objectAtIndex:1];
tbClient.tabBarItem.image = [UIImage imageNamed:@"Breifcase.png"];
[self.window makeKeyAndVisible];
return YES;
}
使用调试器时,我看到它输入if(IsLoggedIn == NO) 并运行LoginViewController 代码,但视图从未显示。
这让我发疯了。
我尝试在[self.windoow makeKeyAndVisible] 之后运行代码,但没有任何改变。
这段代码看起来像我见过的每个例子。谁能看到我做错了什么?
提前致谢,
悬崖
【问题讨论】:
-
你在哪里初始化你的 tabBarController?
-
LoginViewController如何加载它的视图?您将nil传递给 nib 名称,因此您必须覆盖loadView才能以编程方式加载视图才能使其正常工作。如果是这样,您是否在loadView中调用setView:(或者如果使用点语法,则调用self.view = whatever)? -
@jlehr 如果您使用 nil 作为 nib 名称,它将首先尝试使用与类名称相同的 nib。不过似乎还是指定它会更好
-
我最初指定了笔尖名称和捆绑包,所以我知道这不是问题所在。由于我找到了一些代码示例,我一时兴起对其进行了更改。
-
我不确定你在哪里初始化它是什么意思?这个 sn-p 来自 AppDelegate 并且是基于选项卡的视图项目的默认配置的一部分。 (我对 Objective-C/iPhone 开发还很陌生……对不起,如果我看起来很密集)
标签: iphone objective-c ios4 uiviewcontroller