使用实例方法以编程方式添加子视图

Add subview programmatically using instance method

我正在尝试使用我的 ThirdClass : NSObject class 中声明的方法以编程方式将子视图添加到我的 ViewController : UIViewController。这是我的代码:

在 ViewController.m 文件中我做的是:

- (void)viewDidLoad {
    [super viewDidLoad];
    ThirdClass *instanceOfThirdClass = [[ThirdClass alloc] init];
    [instanceOfThirdClass createView];
}

并且在我的 ThirdClass.m 中声明了实例方法:

-(void)createView{
    NSLog(@"enter create app");
    UIView *myView = [[UIView alloc]initWithFrame:CGRectMake(50, 0, 320, 100)];
    [myView setBackgroundColor:[UIColor redColor]];
    ViewController *instanceOfViewController = [[ViewController alloc]init];
    [instanceOfViewController.view addSubview:myView];

    }

所以问题显然是我试图将创建的视图添加到 class 实例,正确的方法是下面@gary-riches 发布的方法,

您正在将您创建的视图附加到一个新的实例化视图控制器,但您显示的视图属于 ViewController.m。您需要将视图添加到 ViewController.m 的视图。

更新您的 createView 方法以处理视图:

-(void)createViewInView:(UIView *)aView{
    NSLog(@"enter create app");
    UIView *myView = [[UIView alloc]initWithFrame:CGRectMake(50, 0, 320, 100)];
    [myView setBackgroundColor:[UIColor redColor]];
    [aView addSubview:myView];
}

然后将您的调用更改为:

[instanceOfThirdClass createViewInView:self.view];

此外,请确保您在 ThirdClass.h 的 header 中有方法签名。应该是:

-(void)createViewInView:(UIView *)aView;