2017-02-21 52 views
0

Я создал класс UIView:ограничений в применении краш-класса UIView

UIViewClass.h

#import <UIKit/UIKit.h> 

@interface UIViewClass : UIView 

@end 

UIViewClass.m

#import "UIViewClass.h" 

@implementation UIViewClass 

- (instancetype)initWithFrame:(CGRect)frame 
{ 

    UIButton *doneBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [doneBtn addTarget:self action:@selector(doneAction:) forControlEvents:UIControlEventTouchUpInside]; 
    [doneBtn setTitle:@"Done" forState:UIControlStateNormal]; 
    [doneBtn.titleLabel setFont:[UIFont fontWithName:@"AvenirNext-Bold" size:20]]; 
    doneBtn.frame = CGRectMake(0, 0, 75, 40); 
    doneBtn.translatesAutoresizingMaskIntoConstraints = NO; 
    [self addSubview:doneBtn]; 

    [self addConstraints:[NSLayoutConstraint 
         constraintsWithVisualFormat:@"H:|-180-[doneBtn]" 
         options:0 
         metrics:nil 
         views:NSDictionaryOfVariableBindings(doneBtn)]]; 

    return self; 

} 

@end 

и я называю это UIViewClass *viewClass = [[UIViewClass alloc] initWithFrame:CGRectMake(0,0,150,150)];

When Я пытаюсь его построить, он построен без ошибок, но когда я запускаю приложение, приложение выходит из строя. Я знаю, что проблема - это ограничение, потому что без него она работает плавно. Может кто-нибудь сказать мне, что не так?

Заранее спасибо.

ответ

1

Вы не используете суперкласс. Всегда сначала вызывайте инициализатор суперкласса (супер).

Дополнительная литература: Concepts in Objective-C Programming

Пример:

self = [super initWithFrame:frame]; 
+0

вы можете объяснить? например, что мне нужно добавить к моему коду –

+0

, это не проблема, потому что он отлично работает без ограничения –

+1

@AlmogHamdani. Вы все равно хотите это сделать. – shallowThought