结合两个iphone应用程序(1个ViewController,1个TabBarController)

时间:2010-10-25 11:41:29

标签: iphone interface-builder

我目前正在开发一个应用程序,我在其中制作一个包含不同产品的目录。到目前为止,我已经制作了我的启动菜单,其中包括三个按钮(一个用于目录,一个用于设置,一个用于说明)。当按下目录按钮时,应用程序切换到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)?

提前致谢。

1 个答案:

答案 0 :(得分:0)

这是创建应用程序的一种非常奇怪的方式。但是,您应该能够在导航控制器堆栈中向UITabBarController公开。我认为没有任何理由说明这是不可能的。

否则,您可以从其他应用程序导入代码,然后当您单击按钮时可以执行[self presentModalViewController:myTabBarController animated:YES];,这将提供相同的功能。