从另一个视图控制器访问变量

时间:2013-06-09 22:16:32

标签: ios objective-c uiviewcontroller setter

我正在研究目标C中的一个项目,我必须修改一些来自uiviews的视图控制器中的变量。

所以我尝试过这样的事情:

ViewController.h:

@property (nonatomic) bool Contact;

其中一个UIViews:

ViewController * View;
View.Contact = YES;

我也尝试在ViewController中创建一个这样的setter方法:

-(void) SetterContact:(bool)boolean;

所以从这样的UIView修改:

[View SetterContact:YES];

但它看起来很有效。 我已经读过,我必须初始化包含变量的对象,但是在内存管理中,从已经激活的对象进行一些初始化并不是很好吗? 所以如果View已经是init,我不打算从另一个UIView no调用init方法吗?

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

如果你想从其他viewController访问bool变量,那就简单地说: -

@property BOOL Contact;

并创建一个ViewController对象,在其中声明了联系人变量BOOL并使用如下方式访问此变量: -

OtherViewController *otherViewController=[[OtherViewController alloc] init];
otherViewController.Contact=YES;

由于它是一个实例变量,因此必须使用类对象进行访问。

答案 1 :(得分:0)

  1. 尊重命名惯例
    @property (nonatomic,retain) UIViewController *myController;
  2. 不要忘记合成
    @synthesize myController = _myController;

    1. 如果你想实现自己的setter,请执行以下操作:尊重命名惯例
      -(void)setMyController:(UIViewController*)controller;

    2. 或者如果出于任何奇怪的原因你不能尊重命名惯例,你可以将属性指向你想要的方法
      @property (nonatomic,retain,setter=myBizarreSetterMethod:) UIViewController *myController;

    3. 这也可以帮助你question in stackoverflow

答案 2 :(得分:0)

在.h文件中使用@property (nonatomic, assign, getter = isContact) BOOL contact;