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];