6

我希望视图控制器能够dog在应用程序委托中访问。

我希望应用程序委托能够mouse在视图控制器中访问。


#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
    int mouse;  // <----------------
}
@end

- (void)viewDidLoad
{
    [super viewDidLoad];

    mouse = 12;  // <-------------------

    NSLog(@"viewDidLoad %d", dog); // <---------------
}

#import <UIKit/UIKit.h>

@class ViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
    int dog;  // <---------------
}
@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) ViewController *viewController;

@end

- (void)applicationWillResignActive:(UIApplication *)application
{
    NSLog(@"applicationWillResignActive %d", mouse); // <--------------
}

 - (void)applicationDidBecomeActive:(UIApplication *)application
{
    dog = 77; // <---------------------

    NSLog(@"applicationDidBecomeActive");
}
4

2 回答 2

8

第 1 部分:在 ViewController.h 中:

-(int)mouse;  //add this before the @end

在 ViewController.m 中,添加这个方法:

-(int)mouse
{
    return mouse;
}

要从 AppDelegate 访问鼠标,使用 self.viewController.mouse 例如;

NSLog(@"ViewController mouse: %i", self.viewController.mouse);

第2部分:

在 AppDelegate.h 中:

-(int)dog;  //add this before the @end

在 AppDelegate.m 中,添加此方法:

-(int)dog
{
    return dog;
}

在 ViewController.m 中:

#import "AppDelegate.h"

要从 ViewController 访问 dog,请使用以下命令:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog(@"dog from AppDelegate: %i", [appDelegate dog]);  //etc.
于 2012-05-03T18:11:37.387 回答
6

在您的视图控制器头文件中添加鼠标作为属性:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
    NSInteger mouse;  // <----------------
}

@property (nonatomic, assign) NSInteger mouse;

@end

在 @implementation 行下方的视图控制器实现中合成属性:

@synthesize mouse;

在您的应用委托中添加 dog 作为属性:

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
    NSInteger dog;  // <---------------
}
@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) ViewController *viewController;

@property (nonatomic, assign) NSInteger dog;

@end

还在您的应用程序委托实现中合成狗。

现在在您的应用程序委托中,假设您有对视图控制器的引用,您可以像这样访问鼠标:

viewController.mouse = 13;

您可以对您的应用程序委托类执行相同的操作,可以从任何视图控制器使用(假设您的应用程序委托类的名称是 AppDelegate)访问它:

((AppDelegate *)([UIApplication sharedApplication].delegate)).dog = 13;

我建议您也使用 NSInteger 而不是 int。

于 2012-05-03T18:16:43.693 回答