Objective c 从另一个类编辑UIViewController

Objective c 从另一个类编辑UIViewController,objective-c,cocoa-touch,uikit,Objective C,Cocoa Touch,Uikit,我试图以编程方式从另一个NSObject类更改UIViewController的用户界面。问题是我不确定如何从NSObject类访问UIViewController的视图。例如,在我的NSObject类中,我会说: self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; self.view.backgroundColor = [UIColor yellowColor]; 但我不断收到错误,在非支柱或联合体中显

我试图以编程方式从另一个
NSObject
类更改
UIViewController
的用户界面。问题是我不确定如何从
NSObject
类访问
UIViewController
的视图。例如,在我的
NSObject
类中,我会说:

self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
self.view.backgroundColor = [UIColor yellowColor];

但我不断收到错误,在非支柱或联合体中显示“请求成员”视图。“是否需要允许我的
NSObject
类查看我的
UIViewController

您不能这样访问。。。您需要以某种方式在NSObject类中传递UIViewController的视图

每当你在方法中说“self”时,它指的是拥有该方法的任何对象。因此,当您说
self.view
时,实际上是在要求NSObject的视图(不用说,它不存在,除非您专门将NSObject子类化为具有“view”属性)

您应该做的是在NSObject类的接口声明中为它提供一个名为
myController
的属性,或者将
ViewController*
传递给需要访问它的任何方法

对于属性,您可以说:

ViewController* myController;
在NSObject子类接口声明中,或对于方法方式,向NSObject子类的方法添加参数:

- (void) someMethodThatTakesAViewController: (ViewController*) theViewController {
    //Do your stuff here
    theViewController.view = [[UIView alloc] init]; // Or whatever you want to do
} 

希望这就是您要查找的内容。

在试图更改视图的对象的头文件中,添加
@class;
,然后在
@interface
部分,添加
*viewController;
然后在
@interface
外部添加
@属性(非原子,保留)*viewController;
。然后在主文件中添加
@synthesis viewController;
#import“您可以将您的id键入到
UIViewcontroller
,如

[((UIViewController *)yourID).view addSubview:yourView.view];

“self”总是指当前对象。在你的例子中,在一些没有“view”属性的随机对象中说“self.view”“将导致此错误。如果您手边有一个viewController参考,您可以说viewController.view,这听起来像是您需要的。我将如何参考viewController?为了提高您的回答质量,请包括您的帖子将如何/为什么解决此问题。”。
#import "Test.h"
#import "Test2ViewController.h"

@implementation Test

@synthesize viewController;

...

viewController.view.backgroundColor = [UIColor yellowColor];

...
[((UIViewController *)yourID).view addSubview:yourView.view];