【问题标题】:use class methods for encapsulation?使用类方法进行封装?
【发布时间】:2014-03-12 20:03:57
【问题描述】:

我在一个类中创建了一些 uiimage 视图类型的@properties,然后在我的 rootviewcontroller 中初始化了该类。

问题.h:

@property(nonatomic,strong)UIImageView *img1;
@property(nonatomic,strong)UIImageView *img2;
@property(nonatomic,strong)UIImageView *img3;
@property(nonatomic,strong)UIImageView *img4;

'viewcontroller.m'

-(void)viewdidload{

questions *q1=[[questions alloc]init];
q1.img1 =[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"red.png"]];
[self.view addSubview:q1.img1];


UITapGestureRecognizer *Tap1 = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(iTap:)];
[q1.img1 addGestureRecognizer:Tap1];

}


-(void)iTap:(UIGestureRecognizer *)gestureRecognizer {
// do something..
}

我知道用初始化代码填充 viewdidload 不是一个好主意。 有没有更好的方法来使用类方法来实现这一点?

喜欢:

问题.m:

+(questions * )mymethod{

questions *q1=[[questions alloc]init];
q1.img1 =[[uiimageview alloc]initwithimage [uimage imagenamed@"red.png"]];
[self.view addSubview:q1.img1];


UITapGestureRecognizer *Tap1 = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(iTap:)];
[q1.img1 addGestureRecognizer:Tap1];

return q1;
}

然后在 viewdidload 中调用该方法

viewcontroller.m:

-(void)viewdidload{

[questions mymethod];

}

【问题讨论】:

  • 您应该首先修复代码中最明显的错误。
  • 是的,我知道...请简短回答我的问题
  • initWithTarget:self 在类方法中不起作用。
  • 我之前尝试过用“视图控制器”实例代替 self ...但它没用..

标签: ios objective-c viewdidload class-members


【解决方案1】:

viewDidLoad 中创建添加视图并没有什么问题。但是,您也可以使用- [UIViewController loadView]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    相关资源
    最近更新 更多