2013-01-15 38 views
0

我試圖子類的UIImageView添加一個UIControl它,因此當它被選中,我知道:子類的UIImageView並添加UIControl

-(id)initWithSize:(CGSize)size OffImage:(UIImage *)offImage onImage:(UIImage *)onImage 
{ 
    if (self) { 
     [self setTranslatesAutoresizingMaskIntoConstraints:NO]; 
     self.userInteractionEnabled = TRUE; 

     [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[self(80)]" 
                    options:0 
                    metrics:@{@"WIDTH" : [NSNumber numberWithFloat:size.width]} 
                     views:NSDictionaryOfVariableBindings(self)]]; 

     [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[self(90)]" 
                    options:0 
                    metrics:@{@"HEIGHT" : [NSNumber numberWithFloat:size.height]} 
                     views:NSDictionaryOfVariableBindings(self)]]; 

     self.offImage = offImage; 
     self.onImage = onImage; 
     self.selected = FALSE; 

     UIControl *control = [[UIControl alloc] init]; 
     [control setTranslatesAutoresizingMaskIntoConstraints:NO]; 
     self.control = control; 

     [self addSubview:control]; 

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

    } 

    return self; 
} 

當我嘗試添加的約束,使UIControl的同樣大小的子類的UIImageView,我得到一個錯誤說self.control沒有一個上海華:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse constraint format: 
Unable to interpret '|' character, because the related view doesn't have a superview 
H:|[control]| 
      ^' 

如果我通過創建一個UIImageView做同一類型的東西,然後創建一個UIControl和[imageView addsubview:control],它工作得很好。爲什麼當我嘗試將相同的代碼添加到init方法時會崩潰?

回答

2

你是如何創建imageView子類對象的?在這段代碼中沒有[Super init ..]

+0

唉,就是這樣,謝謝!我忘了'self = [super init]'。現在我感到很傻。 – Padin215

相關問題