iOS:自定义视图与xib

前端之家收集整理的这篇文章主要介绍了iOS:自定义视图与xib前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我错过了一些重要的事情.不完全确定是什么.

我有一个自定义视图子类.我创建了一个xib文件来设计它的布局.我连接了四个按钮作为出口到课堂.

#import <UIKit/UIKit.h>

@interface MCQView : UIView
@property (strong,nonatomic) IBOutlet UIButton *btn1;
@property (strong,nonatomic) IBOutlet UIButton *btn2;
@property (strong,nonatomic) IBOutlet UIButton *btn3;
@property (strong,nonatomic) IBOutlet UIButton *btn4;

然后我有

#import "MCQView.h"

@implementation MCQView
@synthesize btn1,btn2,btn3,btn4;

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"MCQView" owner:self options:nil] objectAtIndex:0]];
            NSLog(@"%@",btn1);

    return self;
}

然后我将视图添加到另一个视图控制器:initWithFrame.

当我尝试记录btn1,看它是否存在,它打印为零.我假设它是因为我没有初始化它,但是我不完全确定如何做到这一点,考虑到如果我将它创建为一个新的按钮,那么xib中的所有东西都将是无用的?

解决方法

编辑回应:

哦,等等,你正在尝试在课堂上初始化视图?不要这样做

在Interface Builder中,将MCQview.xib的类设置为MCQView以自动创建连接.连接所有的按钮,如果还没有.

之后,您将能够自动编辑属性.

原始回应

我从记忆中这样做,但我认为你应该这样做:

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MCQView" owner:self options:nil];

UIView *view = [[UIView alloc] init]; // or if it exists,MCQView *view = [[MCQView alloc] init];

view = (UIView *)[nib objectAtIndex:0]; // or if it exists,(MCQView *)[nib objectAtIndex:0];

[self.view addSubview:view];

猜你在找的iOS相关文章