使用实例方法以编程方式添加子视图
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;
我正在尝试使用我的 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;