从另一个类编辑UIViewController

时间:2010-04-13 06:06:46

标签: objective-c cocoa-touch uikit

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

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

但我不断收到错误,说“请求会员”视图“不是支柱或联合”。我需要让NSObject班级看到我的UIViewController吗?

4 个答案:

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