我希望视图控制器能够访问app delegate中的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");
}
答案 0 :(得分:9)
第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.
答案 1 :(得分:6)
在视图控制器头文件中,将鼠标添加为属性:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
{
NSInteger mouse; // <----------------
}
@property (nonatomic, assign) NSInteger mouse;
@end
在@implementation行下面的视图控制器实现中合成属性:
@synthesize mouse;
在你的app delegate中添加dog作为属性:
@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
NSInteger dog; // <---------------
}
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) ViewController *viewController;
@property (nonatomic, assign) NSInteger dog;
@end
还在您的app委托实施中合成dog。
现在在您的app委托中,假设您有对视图控制器的引用,您可以像这样访问鼠标:
viewController.mouse = 13;
你可以对你的app delegate类做同样的事情,可以从任何视图控制器使用(假设你的app delegate类的名称是AppDelegate):
((AppDelegate *)([UIApplication sharedApplication].delegate)).dog = 13;
我建议你也使用NSInteger而不是int。