Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何使用多种类型的控制器构建应用程序?_Iphone_Objective C_Cocoa Touch_Interface Builder_Uitabbarcontroller - Fatal编程技术网

Iphone 如何使用多种类型的控制器构建应用程序?

Iphone 如何使用多种类型的控制器构建应用程序?,iphone,objective-c,cocoa-touch,interface-builder,uitabbarcontroller,Iphone,Objective C,Cocoa Touch,Interface Builder,Uitabbarcontroller,我如何才能做到以下几点: 当我的应用程序加载时,UIView将显示4个按钮 单击按钮将加载一个可以显示多个视图的UIAbbar控制器(不是带有UIAbbar的UIView) 这对我来说似乎很有挑战性,因为为了使用UITabBarController,我需要将其添加到appDelegate中窗口的子视图中。这样,我的应用程序将自动加载根视图中的UITabbarController。您不需要在应用程序委托中添加UITabbarController,这只是最常用的使用方法。您可以使用一个简单的UIVi

我如何才能做到以下几点:

  • 当我的应用程序加载时,UIView将显示4个按钮
  • 单击按钮将加载一个可以显示多个视图的UIAbbar控制器(不是带有UIAbbar的UIView)

  • 这对我来说似乎很有挑战性,因为为了使用UITabBarController,我需要将其添加到appDelegate中窗口的子视图中。这样,我的应用程序将自动加载根视图中的UITabbarController。

    您不需要在应用程序委托中添加
    UITabbarController
    ,这只是最常用的使用方法。您可以使用一个简单的
    UIViewController
    使初始视图,然后当按下按钮时加载
    uitabarcontroller
    (以编程方式或从nib加载),然后显示它

    以下是应用程序代理中可能包含的内容的示例:

    - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
        // viewController is a UIViewController loaded from MainWindow.xib with a button that calls loadTabBarController
        [window addSubview:viewController.view];
        [window makeKeyAndVisible];
    
        return YES;
    }
    
    - (IBAction) loadTabBarController {
        self.tabBarController = [[[UITabBarController alloc] initWithNibName:@"MyTabBarController" bundle:nil] autorelease];
        [viewController.view removeFromSuperview];
        [window addSubview:tabBarController.view];
    }
    

    您不需要在应用程序委托中添加
    UITabBarController
    ,这只是最常用的使用方法。您可以使用一个简单的
    UIViewController
    使初始视图,然后当按下按钮时加载
    uitabarcontroller
    (以编程方式或从nib加载),然后显示它

    以下是应用程序代理中可能包含的内容的示例:

    - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
        // viewController is a UIViewController loaded from MainWindow.xib with a button that calls loadTabBarController
        [window addSubview:viewController.view];
        [window makeKeyAndVisible];
    
        return YES;
    }
    
    - (IBAction) loadTabBarController {
        self.tabBarController = [[[UITabBarController alloc] initWithNibName:@"MyTabBarController" bundle:nil] autorelease];
        [viewController.view removeFromSuperview];
        [window addSubview:tabBarController.view];
    }
    

    如果我在另一个UIViewController中,如何调用loadTabBarController?在我的示例中,它将连接到Interface Builder中。MainWindow.xib将加载viewController。如果要以编程方式执行此操作,则可以将按钮的目标设置为应用程序委托,并将操作设置为普通操作。假设viewController有一个按钮连接到Interface Builder中的iAction。如果窗口在appDelegate中,viewController如何获取对该窗口的引用?窗口也在nib中,但是在我的示例中,视图控制器不需要引用该窗口,只需要引用应用程序委托。如果我在另一个UIViewController中,我如何调用loadTabBarController?在我的示例中,它将连接到Interface Builder中。MainWindow.xib将加载viewController。如果要以编程方式执行此操作,则可以将按钮的目标设置为应用程序委托,并将操作设置为普通操作。假设viewController有一个按钮连接到Interface Builder中的iAction。如果窗口在appDelegate中,viewController如何获取对该窗口的引用?该窗口也在nib中,但是在我的示例中,视图控制器不需要引用该窗口,只需要引用应用程序委托。