我想加载一个不是UITabViewController视图的笔尖。这就是我现在所拥有的,它不起作用,但它应该让你知道我想要的东西:
- (IBAction)PlaylistButtonPressed:(id)sender
{
MusicPick *music = [[MusicPick alloc] initWithNibName:@"MusicPick" bundle:nil];
[self.view addSubview:music.view];
[music release];
}
当您按下视图中的按钮时,想法是加载另一个笔尖,MusicPick,它将作为子视图加载,选择一些内容然后回到这里。任何帮助都表示赞赏或新想法。
答案 0 :(得分:3)
您无法将子视图直接添加到UITabBarController
。这些控制器之一的工作方式是存储UIViewController
列表并在选项卡中显示每个控制器。但他们并不是真正的子视图。除了更新此列表之外,您实际上并没有真正修改标签栏控制器本身。
由于您似乎想要做的是提供一个临时视图以允许用户选择一些会影响标签栏控制器中某些内容的选项,我建议您将这个视图从您的笔尖呈现为模态视图< em> over 选项卡式视图。请查看UIViewController
的{{3}}和presentModalViewController:animated:
方法。假设MusicPick
是UIViewController
的子类,只需在分配之后将其传递给此方法(例如您在上面的第一行代码中执行此操作),UIKit将负责其余部分。当您完成从中提取所选值或用户输入的数据时,请记得发布MusicPick
实例。
答案 1 :(得分:1)
添加更多细节。
您可以使用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(例如overlay),那么你可以使用你已经想到的addSubView,不需要UINavigation Controller。