UITabViewController のビューではない NIB をロードするにはどうすればよいですか?
-
23-08-2019 - |
質問
UITabViewController のビューではない nib をロードしたいと考えています。これが私が現在持っているものであり、機能していませんが、これで私が何を望んでいるのかがわかるはずです。
- (IBAction)PlaylistButtonPressed:(id)sender
{
MusicPick *music = [[MusicPick alloc] initWithNibName:@"MusicPick" bundle:nil];
[self.view addSubview:music.view];
[music release];
}
ビュー内のボタンを押すと、別のペン先である MusicPick がサブビューとしてロードされ、何かを選択してすぐにここに戻るというアイデアです。あらゆる助け、または新しいアイデアを歓迎します。
解決
もう少し詳細を追加します。
あなたはaddSubViewを使用することによって、またはUITabBarControllerのビューに上のコントローラを押すことで、既存のUIViewControllerのビューにビューを追加することができます。後者の場合には、UITabBarControllerはRootViewControllerとUINavigationController [されている]なければならない。
私は疑って、これはあなたが何を意味するかです。したがって、あなたは、次のような何かを考えています。
- (IBAction)PlaylistButtonPressed:(id)sender
{
// Load UIViewController from nib
MusicPick *music = [[MusicPick alloc] initWithNibName:@"MusicPick" bundle:nil];
// Add to UINavigationController's stack, i.e. the view for this UITabBarController view
[self.navController pushViewController:music animated:YES];
// Release music, no longer needed since it is retained by the navController
[music release];
}
これは、あなたのUITabBarControllerのビューとしてUINavigationControllerを持っており、それが呼ばれていますからNavControllerを前提としています。
あなただけのUITabBarController(例えばオーバーレイ)中のUIViewControllerのビューにUIViewのを追加したい場合は、すでに必要な、何UINavigationコントローラを考え出していないてきたように、、そしてあなただけaddSubViewを使用することができます。
他のヒント
サブビューを直接に追加することはできません。 UITabBarController
. 。これらのコントローラーの 1 つが機能する方法は、次のリストを保存することです。 UIViewController
s と、これらのそれぞれをタブに表示します。しかし、それ自体は実際にはサブビューではありません。このリストを更新する以外、タブ バー コントローラー自体を実際に変更することはありません。
あなたがやりたいことは、タブバーコントローラーの何かに影響を与えるいくつかのオプションをユーザーが選択できるようにする一時的なビューを提示することであるため、ペン先からこのビューをモーダルビューとして提示することをお勧めします 以上 タブ付きビュー。を見てみましょう UIViewController
さんの presentModalViewController:animated:
そして dismissModalViewControllerAnimated:
方法。仮定すると MusicPick
のサブクラスです UIViewController
, を割り当てた後 (上記のコードの最初の行で実行したように)、このメソッドに渡すだけで、残りは UIKit が処理します。それを忘れずに解放してください MusicPick
選択した値またはユーザーが入力したデータをそこから取得し終わったときのインスタンスです。