我需要在所有视图中访问(读/写)一些变量。
变量将在视图1中定义,然后在视图2中使用并设置为新值。
我该怎么做?
答案 0 :(得分:1)
雅,有一个简单的方法可以解决这个问题.....
您可以采用全局变量
在Delegate.h文件中声明您的变量:
@interface Smoke_ApplicationAppDelegate : NSObject {
UIWindow *window;
UINavigationController *navigationController;
NSString *messageString; //This would be your String Variable
} @property(nonatomic,retain)NSString *messageString;
其次在Delegate.m文件中
@implementation Smoke_ApplicationAppDelegate
@synthesize window; @synthesize navigationController; @synthesize messageString; //
在这里合成它..
这是完成。现在你可以在你想要的所有/任何类中使用这个字符串变量..
使用此全局变量。
只需导入你委托文件制作它的对象....
import "DelegateFile.h"
@implementation About
DelegateFile *appDel;
现在在你的class.m
-(void)viewDidLoad { [super viewDidLoad];
appDel=[[UIApplication sharedApplication]delegate];
}
现在,您可以通过此对象访问类中的任何位置:
appDel.messageString
小心地按照我的步骤在给予我的手指这么大的痛苦之后,我相信这肯定会帮助你......
过上轻松的生活,
答案 1 :(得分:0)
请不要在应用程序委托中将它们声明为实例变量,这对MVC来说不是很好的设计实践。
您最好的选择是创建共享数据模型。这可以是所谓的“单例”类,因此它只有每一个实例。然后,此模型类可以存储各种视图所需的任何中心信息。
Rob Napier的回答over here与该页面的其他链接一样,是一个很好的参考。特别是我赞扬Mike Ash's post here。
'单身人士'很棒。它们将数据封装在它所属的模型类中,避免了蠕变的全局变量,这使得代码在将来不易分离。