我正在研究一个需要用户始终登录的应用程序。最初它有一个登录视图,当用户登录时,这被替换为一个tabbar视图。如果我构建到我的设备(iOS 5.0)或5.0模拟器,它工作正常。但是,如果我建立到4.3模拟器,我会遇到奇怪的问题。视图无法在iOS 4.3模拟器中正确显示
例如:它打开的第一个选项卡最初包含登录视图 - 我还没有轮到将其删除,因此目前一旦该选项卡打开,它将从登录视图淡出到菜单屏幕(两者都是第一个标签中的独立视图)。在iOS4.3构建这个第一视图不会淡出。
我记下它跳过第一个屏幕,并有第一个标签直接打开菜单屏幕,其中有用户的Facebook朋友列表。我已将朋友列表打印到控制台,并且它已正确接收 - 但该列表在iOS4.3中显示为空,并且在iOS 5.0中正常工作。 这些东西一直运行,直到我实现了单独的登录视图(afaik)。我假设我没有正确实现视图之间的更改,但我不确定它在哪里出错,因为我没有将任何错误输出到控制台,而且我仍然可以在选项卡之间进行更改。
This是我迄今所做的它(我只包括相关部分):
appDelegate.h
@interface AppDelegate : UIResponder <UITabBarControllerDelegate,LoginViewControllerDelegate, otherDelegates>
FirstViewController *viewController1;
SecondViewController *viewController2;
ThirdViewController *viewController3;
FourthViewController *viewController4;
FifthViewController *viewController5;
loginViewController *lvc;
@property (strong, nonatomic) UITabBarController *tabBarController;
...
appDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
lvc = [[loginViewController alloc] initWithNibName:@"loginViewController" bundle:nil];
lvc.delegate = self;
[self.window addSubview:lvc.view];
self.window.rootViewController = lvc;
[self.window makeKeyAndVisible];
}
- (void)loginViewControllerDidFinish:(loginViewController *)loginViewController {
//load windows and tab bar controller
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil] autorelease];
viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil] autorelease];
viewController3 = [[[ThirdViewController alloc] initWithNibName:@"ThirdViewiPhone" bundle:nil] autorelease];
viewController4 = [[[FourthViewController alloc] initWithNibName:@"FourthViewiPhone" bundle:nil] autorelease];
viewController5 = [[[FifthViewController alloc] initWithNibName:@"FifthViewiPhone" bundle:nil] autorelease];
[viewController4 updateTabBar];
self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, viewController3, viewController4, viewController5, nil];
self.window.rootViewController = self.tabBarController;
[self.window addSubview:self.tabBarController.view];
[self.window makeKeyAndVisible];
}
//called when logout button is pressed
- (void)removeTabBarView
{
//[self.tabBarController.view removeFromSuperview];
[self.window addSubview:lvc.view];
self.window.rootViewController = lvc;
[self.window makeKeyAndVisible];
}
编辑:这就是所谓的的appDelegate一旦所有的登录数据的有已收到。
[self loginViewControllerDidFinish:lvc];
它工作正常的iOS 5.0是什么是真正扔我的事实,我是很新的应用程序开发,所以我不知道如何可以这样做不同的。 如果有人有任何想法,我会非常感激。 谢谢