私は常にユーザがログインしている必要があるアプリを開発中です。最初はログインビューがあり、ユーザーがログインしたときにこれがタブバービューに置き換えられます。私のデバイス(iOS 5.0)または5.0シミュレータにビルドするとうまく動作します。しかし、4.3シミュレータをビルドすると、私は奇妙な問題が発生します。iOS 4.3シミュレータで表示が正しく表示されない
たとえば、最初に開いた最初のタブにはログインビューが含まれていました。まだ削除していないので、そのタブが開くとすぐにログインビューからメニュー画面にフェードします(どちらも第1タブ内の別個のビューである)。 iOS4.3のビルドでは、この最初のビューはフェードアウトしません。
最初の画面をスキップして、最初のタブをユーザーのFacebookの友人リストを持つメニュー画面に直接開きます。私は友人のリストをコンソールに印刷し、正しく受信しましたが、リストはiOS4.3では空で表示され、iOS 5.0では正常に動作します。 これらのことは、別のログインビュー(afaik)を実装するまで機能しました。私はビュー間の変更を正しく実装していないと推測していますが、コンソールにエラーが表示されず、タブなどの間で変更することができないため、どこが間違っているのかわかりません。
私は(私が唯一の関連する部分を含めます)、これまでにそれを行っている方法です。
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では正常に動作事実は、本当に私は、これは違っ行うことができるか見当がつかないので、私はアプリの開発にはかなり新しいよ、私を投げているものです。 誰かが何か考えがあるなら、私は非常に感謝しています。 ありがとう