我正在尝试以编程方式从另一个UIViewController
类更改NSObject
的用户界面。问题是我不确定如何从UIViewController
类访问NSObject
的视图。例如,在我的NSObject
课程中,我会说:
self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
self.view.backgroundColor = [UIColor yellowColor];
但我不断收到错误,说“请求会员”视图“不是支柱或联合”。我需要让NSObject
班级看到我的UIViewController
吗?
答案 0 :(得分:1)
每当你在方法中说“self”时,它指的是拥有该方法的任何对象。所以,当你说self.view
时,你真的要求NSObject的视图(不用说,不存在,除非你专门将NSObject子类化为具有“视图”属性。
你应该做的是给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
}
希望这就是你要找的东西。
答案 1 :(得分:1)
在尝试更改视图的对象的标头文件中添加@class <YOURVIEWCONTROLLER>;
,然后在@interface
部分添加<YOURVIEWCONTROLLER> *viewController;
,然后在@interface
之外添加{ {1}}。然后在主文件中添加@property (nonatomic, retain) <YOURVIEWCONTROLLER> *viewController;
和@synthesize viewController;
。然后,要更改背景颜色,请使用#import "<YOURVIEWCONTROLLER.h"
。
e.g:
Test.h:
viewController.view.backgroundColor = [UIColor <COLOUR>];
Test.m:
#import <UIKit/UIKit.h>
@class Test2ViewController;
@interface Test : UIViewController {
Test2ViewController *viewController;
}
@property (nonatomic, retain) Test2ViewController *viewController;
希望这有帮助
编辑:确保在您的dealloc中调用#import "Test.h"
#import "Test2ViewController.h"
@implementation Test
@synthesize viewController;
...
viewController.view.backgroundColor = [UIColor yellowColor];
...
,否则您的管道会漏水;)
答案 2 :(得分:0)
你不能这样访问...你需要以某种方式在你的NSObject类中传递UIViewController的视图......
答案 3 :(得分:0)
您可以将您的ID类型转换为UIViewcontroller
,例如
[((UIViewController *)yourID).view addSubview:yourView.view];