1

あるxibから別のxibに移動しようとしていて、TabBarを使用しています。xibからxibに移動すると、TabBarがPresentModalViewController失われます。

私がこのように使用すると、失敗します(Androidの強制終了のように):

FirstViewController *fvc = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];
    [fvc setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    fvc.userSelectedLatitude = saveLatitude;
    fvc.userSelectedLongitude = saveLongtitude;
    UITabBarController *tabControl = [[UITabBarController alloc] initWithNibName:fvc bundle:nil];
    [self presentModalViewController:tabControl animated:NO];

私が使用するとき:

UITabBarController *tabControl = [[UITabBarController alloc] initWithNibName:@"FirstViewController" bundle:nil];

TabBarで黒い画面が表示されます。

それはすべて失敗するので、私はそれが正しい方法ではないと思います。それで、それを行う正しい方法は何ですか?

4

2 に答える 2

2

メソッドでNSStringオブジェクトの代わりにViewControllerを渡そうとしているため、上記のコードがクラッシュしますinitWithNibName:bundle:

それを行う方法は、あなたが本当にやりたいことによって異なります。tabBarの有無にかかわらずモーダルビューコントローラーでxibを表示しますか?それとも単にビューコントローラーをモーダルで表示しますか?

アップデート:

さて、最初に各tabBarボタンに関連付けられたView Controllerを作成する必要があります(これまで行ってきたように)。その後、これらのView ControllerをtabBarに追加してから、tabBarControllerをモーダルに表示します。このような:

FirstViewController *fvc = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
fvc.userSelectedLatitude = saveLatitude;
fvc.userSelectedLongitude = saveLongtitude;

UITabBarController *tabControl = [[UITabBarController alloc] init];
[tabControl setViewControllers:[NSArray arrayWithObjects:fvc, nil]];
[tabControl setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentModalViewController:tabControl animated:NO];

このコードは機能するはずだと思います。だから、それを試して、何かがうまくいかないかどうか教えてください。

于 2013-02-19T08:32:41.350 に答える
1

UITabBarControllerを使用すると、ビューを切り替えるためにviewControllerを手動で提示したりコードを呼び出したりする必要はありません。これはあなたのために処理されます。

UITabBarControllerのviewControllersプロパティを設定するだけです。そのようです:

[tabBarController setViewControllers:[NSArray arrayWithObjects:view1, view2, nil]];
于 2013-02-19T07:40:26.637 に答える