2011-11-03 54 views
0

首次加載從UIViewController,如果我做的UIViewController而不是UIView的一樣,那麼它完美

myView *bso =[[myView alloc] init]; 
bso.assignProperty = object; 
[self.view addSubview:bso]; 

myView.m一個UIView

-(id) init{ 
    return [[[NSBundle mainBundle] loadNibNamed:@"MyXib" owner:self options:nil] objectAtIndex:0]; 
} 

時點擊的UIView屬性的按鈕是零

- (IBAction)click:(id)sender{ 
    self.assignProperty // always is nil 
} 

如果我這樣做與UIViewController而不是UIView那麼它的工作原理是完美的。

感謝

回答

1

你不應該返回,從init;嘗試:

-(id) init{ 
if ((self = [super init])) { 
[[NSBundle mainBundle] loadNibNamed:@"MyXib" owner:self options:nil]; 
} 
return self; 
} 

或者從myView刪除init方法,而不是你的頂級代碼,這樣做:

myView *bso = nil; 
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyXib" owner:self options:nil]; 
for (id o in nib) { 
    if ([o isKindOfClass:[myView class]]) { 
    bso = o; 
    break; 
    } 
} 
if (bso) { 
    bso.assignProperty = object; 
    [self.view addSubview:bso]; 
} else { 
    NSLog(@"ERROR: Could not load bso!"); 
} 

還要注意,調用你myView類是混亂 - 對象 - 程序員希望班以大寫字母開頭。

+0

如果我沒有返回'[[NSBundle mainBundle] loadNibNamed:@「MyXib」owner:self options:nil];'不加載xib。問題是當從UIView中點擊一個IBAction時 – aloon

相關問題