-1

タブバーコントローラーに基づいてアプリを構築しました。タブ ビューの 1 つを使用しているときに、指をスワイプして、tabBarController のインデックスが不明な別のタブ ビューに切り替えられるようにしたいと考えています。したがって、目的のビューコントローラーをペン先から呼び出しています。ビューは正しくスワップされますが、タブ バー自体の上に表示され、完全に覆われて使用できなくなるという問題があります。ビューを押し戻したり、タブ バーを上に移動したりするにはどうすればよいですか? ありがとう

- (IBAction)swipeLeftDetected:(UIGestureRecognizer *)sender
{
DesiredViewController *controllerInstance =[[DesiredViewController alloc]initWithNibName:@"DesiredViewController" bundle:nil];
controllerInstance.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controllerInstance animated:YES];
} 
4

1 に答える 1

1

presentModalViewController:animated常に全画面を使用する: iPhone および iPod touch デバイスでは、modalViewController のビューは常に全画面で表示されます。iPad では、プレゼンテーションは modalPresentationStyle プロパティの値に依存します。

実際に UITabBarController を使用する場合は、そのタブのビュー コントローラーをインスタンス化します。そのため、いずれかのタブの View Controller を手動でインスタンス化しようとするのは間違っています。ビュー コントローラーのインスタンスがごちゃごちゃになってしまいます。

selectedIndexUITabBarController のプロパティを設定して、タブを切り替えます。これが必要だと思います。ただし、アニメーションなしで切り替えられます。

切り替え先のコントローラーのポインターのみがわかっている場合は、viewControllersコントローラーのインデックスについてプロパティに問い合わせてから、そのインデックスでタブを切り替えます。

self.selectedIndex = [[self viewControllers] indexOfObject:viewController];
于 2013-05-11T15:06:25.043 に答える