在多视图应用程序中设置类实例(目标C)

时间:2014-05-15 14:34:38

标签: ios objective-c class

我是Objective C,Xcode等的新手。感谢您的帮助,阅读本论坛,我在正确的方向上做了一些步骤,但只在“单一视图应用程序”中。

现在我在故事板中有两个观点:

(FirstViewController.h / m) (SecondViewController.h / m)

我还创建了一个Objective C类,用于从这两个视图中接收数据。

第一次,在FirstViewController中,我有一个IBA ACTION。

按下按钮时:

controllo *control;
control = [[controllo alloc] init];

然后我用来设置“控制”实例使用属性..它工作。

现在“controllo”(控件)的相同实例应该甚至从我的SecondViewClass接收数据,但是即使在传递到第二个视图之前按下了第一个视图(IBA ACTION)的按钮,我也无法访问它。

您能否告诉我如何通过项目中所需的所有视图访问课程?

谢谢!

1 个答案:

答案 0 :(得分:1)

将所有变量放入类中,通过singleton模式访问类,并将类标头导入prefix.pch文件

示例:

GlobalClass.h

#import <Foundation/Foundation.h>

@interface GlobalClass : NSObject

@property (nonatomic, strong) NSString *globalString;
@property (nonatomic, strong) NSNumber *globalNumber;

+ (GlobalClass*) sharedClass;

- (void) methodA;

@end

并在GlobalClass.m

#import "GlobalClass.h"

@implementation GlobalClass

+ (GlobalClass *)sharedClass {

 static GlobalClass *_sharedClass = nil;

 static dispatch_once_t oncePredicate;

 dispatch_once(&oncePredicate, ^{
     _sharedClass = [[GlobalClass alloc] init];
 });

 return _sharedClass;
}

- (id)init {
    self = [super init];
    if (self) {

    //init variable here

    }

    return self;
}

- (void) methodA {

   //do something here
   NSLog(@"this is methodA called");

}

@end

将此.pch文件放在支持文件

#import "GlobalClass.h"

现在您可以使用以下命令从任何类访问全局类变量:

[GlobalClass sharedClass].globalString = @"this is a global string";

您还可以使用以下方法访问该方法:

[GlobalClass sharedClass] methodA];