我目前正在开发一个应用程序,我在其中制作一个包含不同产品的目录。到目前为止,我已经制作了我的启动菜单,其中包括三个按钮(一个用于目录,一个用于设置,一个用于说明)。当按下目录按钮时,应用程序切换到CatalogueViewController,并且该ViewController中的目录应该从该ViewController开始。
除了启动菜单,我还在另一个单独的应用程序中编写了目录的应用程序。目录应用程序使用TabBarController制作,而启动菜单则使用常规ViewControllers。我的下一步是组合这两个应用程序,以便在按下目录按钮时,它应该打开目录。
到目前为止,当我按下目录按钮时,我创建了一个UICatalogueTableViewController的实例,它是UITableViewController的子类,并加载了我的CatalogueView.xib。
ViewController头文件,用于管理要显示的视图:
@class MenuViewController;
@class UICatalogueTableViewController;
@class SettingsViewController;
@class InstructionsViewController;
@interface IkeaViewController : UIViewController {
MenuViewController *menuViewController;
UICatalogueTableViewController *catalogueViewController;
SettingsViewController *settingsViewController;
InstructionsViewController *instructionsViewController;
}
@property (retain, nonatomic) MenuViewController *menuViewController;
@property (retain, nonatomic) UICatalogueTableViewController *catalogueViewController;
@property (retain, nonatomic) SettingsViewController *settingsViewController;
@property (retain, nonatomic) InstructionsViewController *instructionsViewController;
-(IBAction)catalogueButtonPressed:(id)sender;
-(IBAction)settingsButtonPressed:(id)sender;
-(IBAction)instructionsButtonPressed:(id)sender;
@end
按下目录按钮时调用的方法:
- (IBAction)catalogueButtonPressed:(id)sender{
if (self.catalogueViewController.view.superview == nil) {
if (self.catalogueViewController == nil) {
UICatalogueTableViewController *catalogueController = [[UICatalogueTableViewController alloc]initWithNibName:@"CatalogueView" bundle:nil];
self.catalogueViewController = catalogueController;
[catalogueController release];
}
[menuViewController.view removeFromSuperview];
[self.view addSubview:catalogueViewController.view];
}
}
在我的.xib文件(CatalogueView.xib)中我创建了一个TabBarController对象,我的文件所有者将其类标识设置为UICatalogueTableViewController,但我似乎无法连接这两个,因此运行时会显示TabBarController该应用程序。文件所有者需要一个视图。
按下启动菜单中的设置或说明按钮时,实例化ViewController并加载.xib文件没有问题,因为它们只包含一个要显示的视图。
如何从启动菜单(常规ViewController)转到我的目录(TabBarController)?
提前致谢。
答案 0 :(得分:0)
这是创建应用程序的一种非常奇怪的方式。但是,您应该能够在导航控制器堆栈中向UITabBarController公开。我认为没有任何理由说明这是不可能的。
否则,您可以从其他应用程序导入代码,然后当您单击按钮时可以执行[self presentModalViewController:myTabBarController animated:YES];
,这将提供相同的功能。