2012-03-04 125 views
1

我遇到的问题是我有几个ViewController s,我想从另一个ViewController中的一个ViewController访问变量。这可能可以很简单地解决(但我不明白这一点),但如果我有,例如UITextFieldViewController1调用myTextField,我如何从ViewController2访问myTextField.text在Objective-C中从另一个类的一个实例中访问变量

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

在此先感谢!

+1

你想通过访问其他人来完成什么?可能有更好的方法,比如通知,委托等。如果你描述你想要完成的事情,我们可以给你一个更好的答案。 – user1118321 2012-03-04 05:49:12

回答

0

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

  • 创建一个新的类(NSObject的子类)
  • 使其在 程序的寿命singleton..i.e.only一个实例。
  • 将文本存储在单例类中。
  • 检索其他视图控制器单身并加载文本..

谷歌单Objective-C中找到更多关于它。

1

无论你想要做什么几乎肯定是错的。至少,它违背了规则,你应该而不是试图从另一个视图内访问一个视图的视觉效果。

你应该把从你计划分享到你的模型类,不管它可能是UITextField数据,以及访问这些数据通过模型,而不是试图直接访问UITextField

+0

什么是模型课程? – 2012-03-04 16:57:46

+0

@ user1226490这是您用来保持独立于视图的数据的对象。阅读[本MVC](https://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html#//apple_ref/doc/uid/TP40008195-CH32)指南了解更多关于模型 - 视图 - 控制器模式的信息。 – dasblinkenlight 2012-03-04 17:04:29

0

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

第一个视图控制器

+ (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 
} 

问题解决了!

+0

但是我的这个想法的问题是,每个实例不会'myVariable'不相同,因此类本身不知道要返回哪个实例(即使只有一个分配的实例),导致发生错误? – 2012-03-04 16:59:24

相关问题