如何从自定义控制器操作引用AppDelegate实例变量?

Gre*_*reg 3 iphone interface-builder uiviewcontroller ios4

我希望能够(作为一个学习锻炼的控制器)对初始视图我设置一个按钮,然后如果你点击一个动作发生的按钮,从图1交换了看法,以图2.我不知道怎么样你这个?请参阅下面代码中的部分,我想在其中放入执行此操作的代码.

可以发布我需要的代码吗?(即,它将涵盖如何引用我在AppDelegate中建立的变量).让我知道,如果我给自己做的这种练习在某个地方有缺陷.谢谢.

AppDelegate*.h

#import <UIKit/UIKit.h>
@class gregsController;
@class Gregs2ndController;  

@interface windowsBasedAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    gregsController *viewController;
    Gregs2ndController *view2Controller;

}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet gregsController *viewController;
@property (nonatomic, retain) IBOutlet Gregs2ndController *view2Controller;

@end
Run Code Online (Sandbox Code Playgroud)

AppDelegate*.m

#import "windowsBasedAppDelegate.h"
#import "gregsController.h"
#import "Gregs2ndController.h"

@implementation windowsBasedAppDelegate

@synthesize window;
@synthesize viewController;
@synthesize view2Controller;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    // Override point for customization after application launch.
    NSLog(@"windowsBasedAppDelegate - didFinishLaunchingWithOptions");

    //[self.window addSubview:viewController.view];
    [self.window addSubview:view2Controller.view];
    [self.window makeKeyAndVisible];

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

自定义控制器*.m

#import "gregsController.h"
@implementation gregsController
- (IBAction)logSomething {
    NSLog(@"About to switch views");
    [self.view removeFromSuperview];

        // *** HOW DO I REFERENCE view2Controller AND PUT THIS AS THE VIEW  ???? ****

    NSLog(@"Finished switching views");
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*ing 7

通过UIApplication单例,您可以随时随地获得对您的应用程序委托的引用:

#import "gregsController.h"
@implementation gregsController
- (IBAction)logSomething {
    NSLog(@"About to switch views");
    [self.view removeFromSuperview];

    // *** HOW DO I REFERENCE view2Controller AND PUT THIS AS THE VIEW  ???? ****
    // Like this:
    windowsBasedAppDelegate* appDelegate = (windowsBasedAppDelegate*)[[UIApplication sharedApplication] delegate];
    [appDelegate.window addSubview:appDelegate.view2Controller.view];

    NSLog(@"Finished switching views");
}
Run Code Online (Sandbox Code Playgroud)