Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何声明在应用程序的主视图和反面视图中使用的全局变量?苹果_Ios_Objective C_Global Variables - Fatal编程技术网

Ios 如何声明在应用程序的主视图和反面视图中使用的全局变量?苹果

Ios 如何声明在应用程序的主视图和反面视图中使用的全局变量?苹果,ios,objective-c,global-variables,Ios,Objective C,Global Variables,好的,我在这里阅读,我注意到有一行代码:[[UIApplication sharedApplication]delegate]myNSString] 基本上,我希望用户在flipside视图的文本字段中输入一些内容,然后将其存储在主视图上访问的变量中。理想情况下,主视图可以从反面视图读取文本字段,但这似乎是不可能的(在过去几天里,我每天都花几个小时浏览web和各种书籍,寻找如何做到这一点的答案,似乎没有人能够给出明确的答案)。因此,我使用一个全局变量来解决这个问题 我上面打印的代码是否允许我这样

好的,我在这里阅读,我注意到有一行代码:
[[UIApplication sharedApplication]delegate]myNSString]

基本上,我希望用户在flipside视图的文本字段中输入一些内容,然后将其存储在主视图上访问的变量中。理想情况下,主视图可以从反面视图读取文本字段,但这似乎是不可能的(在过去几天里,我每天都花几个小时浏览web和各种书籍,寻找如何做到这一点的答案,似乎没有人能够给出明确的答案)。因此,我使用一个全局变量来解决这个问题

我上面打印的代码是否允许我这样做?在过去的一个小时里,我一直在尝试对其进行调整,但除了为选择器“myNSString”找到
未知的实例方法之外,我什么都没有想到,我不太确定在这种情况下这意味着什么


有人能帮我吗?我觉得我可以继续尝试不同的事情,但没有任何帮助,我只是在黑暗中拍摄。谢谢大家!

如果设置使用全局变量,您可能需要考虑使用单例保存数据。这里有一个很好的关于单例的教程:-基本上,它是一个可以在整个应用程序中共享并由不同控制器访问/修改的类。您可以在其上创建属性,从翻转视图写入该属性,然后从主视图访问该属性

#import "Singleton.h"

@implementation Singleton

@synthesize yourTextField;

#pragma mark Singleton Methods

+ (id)sharedManager {
    static Singleton *sharedMyManager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedMyManager = [[self alloc] init];
    });
    return sharedMyManager;
}

- (id)init {
    if (self = [super init]) {
        yourTextField = @"";
    }
    return self;
}
您可以通过导入其头文件在代码中调用它,并且:

Singleton *mySingleton = [Singleton sharedManager];
mySingleton对象将附加文本字段。可通过以下方式访问:

mySingleton.yourTextField;
.h文件:

#import <Foundation/Foundation.h>

@interface Singleton : NSObject

@property (nonatomic, strong) NSString *yourTextField;

+ (id)sharedManager;

@end
#导入
@接口单例:NSObject
@属性(非原子,强)NSString*yourTextField;
+(id)共享管理者;
@结束
单例(记住一次调度)、静态变量或NSUserDefault。这取决于你真正需要什么

如果您使用的是故事板,并且只想在VC之间传递数据,那么您可以使用“prepareForSegue”方法(这里描述:)


Segue具有“destinationController”属性,因此您可以在显示它之前设置VC。

我很清楚,您希望一个视图控制器将其文本视图的值传递给另一个视图控制器吗?这正是我想要做的。谢谢!根据教程,我会调用
MyManager*sharedManager=[MyManager-sharedManager]在主视图和翻转侧视图上?它似乎在内存中创建它们的不同实例,但它仍然没有传递值,但它至少可以编译和运行。是的,您可以在两侧调用它。一旦您获得了所需的信息,您就可以设置变量,它将一直保持到稍后调用(从您的另一个视图)。我已经编辑了我的答案以包含相关的代码。它似乎没有持久性。对变量的NSLog快速检查表明,每次加载主视图时,NSString都是空的。这就像每次我更改视图时它都会重新创建一样。请发布您正在使用的代码,以便我可以帮助您。不管怎样,它确实做到了。我每次都有过多的东西。非常感谢你的帮助!对不起,我应该说我做这件事才几个星期。这场讨论让我难以接受。如果NSUserDefaults指的是设置,这不是我想要用来完成此任务的。是否使用故事板?