从Objective-C中的另一个类访问一个实例中的变量

从Objective-C中的另一个类访问一个实例中的变量,objective-c,class,variables,uiviewcontroller,uitextfield,Objective C,Class,Variables,Uiviewcontroller,Uitextfield,我遇到的问题是我有几个ViewControllers,我想从另一个ViewController中的一个ViewController访问一个变量。这可能很简单就可以解决(但我无法解决),但如果我在ViewController1中有一个名为UITextField的UITextField,我如何从ViewController2访问myTextField.text 我尝试在第二个类中实例化UIViewController,但这不起作用,因为这只是类的新实例化,而不是已经实例化的类,因此所有变量都没有正确

我遇到的问题是我有几个
ViewController
s,我想从另一个
ViewController
中的一个
ViewController
访问一个变量。这可能很简单就可以解决(但我无法解决),但如果我在
ViewController1
中有一个名为
UITextField
UITextField
,我如何从
ViewController2
访问
myTextField.text

我尝试在第二个类中实例化
UIViewController
,但这不起作用,因为这只是类的新实例化,而不是已经实例化的类,因此所有变量都没有正确的值


提前谢谢

访问所有视图控制器中文本字段的简单方法

  • 创建新类(NSObject的子类)
  • 使其成为一个单实例..即在 节目
  • 将文本存储在singleton类中
  • 在其他视图控制器中检索单例并加载文本

在objective-c中搜索singleton以了解更多信息。

在所有视图控制器中访问文本字段的简单方法

  • 创建新类(NSObject的子类)
  • 使其成为一个单实例..即在 节目
  • 将文本存储在singleton类中
  • 在其他视图控制器中检索单例并加载文本

在objective-c中搜索singleton以了解更多信息。

无论你想做什么都几乎肯定是错误的。至少,这违反了一条规则,即您不应该试图从一个视图内部访问另一个视图的视觉效果


您应该将计划共享的
UITextField
中的数据放入您的模型类中,不管它是什么,并通过模型访问该数据,而不是试图直接访问
UITextField

无论您试图做什么都几乎肯定是错误的。至少,这违反了一条规则,即您不应该试图从一个视图内部访问另一个视图的视觉效果


您应该将计划共享的
UITextField
中的数据放入模型类中,不管是什么,并通过模型访问这些数据,而不是试图直接访问
UITextField

我发现,这是最简单的方法,是创建一个静态方法,该方法返回您试图访问的变量,无论是在类中还是作为第一个视图控制器中的实例变量

第一视图控制器

+ (NSString*) returnSomestring{
    return myVariable;
    //myVariable can be replaced with textView.text or whatever you need it to be.
}
#import "FirstViewController.h"

- (void) doSomething{
    NSString* var = [FirstViewController returnSomestring];
    //Code
}
第二视图控制器

+ (NSString*) returnSomestring{
    return myVariable;
    //myVariable can be replaced with textView.text or whatever you need it to be.
}
#import "FirstViewController.h"

- (void) doSomething{
    NSString* var = [FirstViewController returnSomestring];
    //Code
}

问题解决了

我发现,最简单的方法是创建一个静态方法,返回您试图访问的变量,无论是在类中还是作为第一个视图控制器中的实例变量

第一视图控制器

+ (NSString*) returnSomestring{
    return myVariable;
    //myVariable can be replaced with textView.text or whatever you need it to be.
}
#import "FirstViewController.h"

- (void) doSomething{
    NSString* var = [FirstViewController returnSomestring];
    //Code
}
第二视图控制器

+ (NSString*) returnSomestring{
    return myVariable;
    //myVariable can be replaced with textView.text or whatever you need it to be.
}
#import "FirstViewController.h"

- (void) doSomething{
    NSString* var = [FirstViewController returnSomestring];
    //Code
}

问题解决了

通过让一个访问另一个,您试图实现什么?可能有更好的方法,例如通知、委派等。如果您描述了您想要完成的任务,我们可以给您一个更好的答案。通过让一个访问另一个,您想要完成什么?可能有更好的方法,例如通知、委托等。如果您描述了您想要完成的任务,我们可以给您一个更好的答案。但我的问题是,并非每个实例的
myVariable
都是相同的,因此类本身不知道要返回哪个实例(即使只有一个已分配实例)导致错误?但我的问题是,不是每个实例的
myVariable
都不相同,因此类本身不知道要返回哪个实例(即使只有一个已分配实例),导致错误?@user1226490它是用于以独立于视图的方式保留数据的对象。有关模型视图控制器模式的详细信息,请阅读指南。@user1226490它是用于以独立于视图的方式保留数据的对象。有关模型视图控制器模式的详细信息,请阅读指南.