2011-01-20 6 views
1

私はUIViewから継承するクラスを持っています。私はそれを使ってカスタムデフォルトビューを作成しました。 -(id)initWithFrame:(CGRect)frame;を使用しますが、イニシャライザを使用した場合、frameのパラメータは常にnullの値です。ここで UIView:initWithFrameをオーバーライドし、nilパラメータを取得

はコードです:

#import "SomeView.h" 
@implementation POIView 
@synthesize theButton; 

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
    NSLog(@"%@",frame); 
    } 
    return self; 
} 
@end 

のNSLog結果は常に(null)ある、と私は私がのtableViewに今それを使用して初期化

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
static NSString *CellIdentifier = @"CELL_ID"; 
const int THE_TAG   = 1000; 

UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    CGRect *rect = CGRectMake(0, 0, tableView.frame.size.width,tableView.rowHeight); 
    someView = [[SomeView alloc] initWithFrame:rect]; 
}else{ 
    someView = (SomeView *) [cell viewWithTag:THE_TAG]; 
} 
return cell; 
} 

と呼ばれる場所ですが、私は使用しましたいくつかのUILabelにも少し感謝しています。

+0

する必要がありますが、私たちにあなたが' initWithFrame呼び出すコードを表示してください。 –

+0

完了しました。私は 'initWithFrame'を呼び出したところにソースを追加しました – Suprie

答えて

1

フレームは構造体ですが、NSObjectのサブクラスではありません。以下の方法でフレーム値を表示することができます。

NSLog(@"%.2f %.2f %.2f %.2f",frame.origin.x, frame.origin.y, frame.size.width, frame.size.height); 

のNSLog(@ "%の@"、AOBJ)。と等しくなります。NSLog(@ "%@"、[aObj description]);

+1

NSStringFromCGRect()を使って値を表示する方がはるかに簡単です。しかし、フレームはまだ「ヌル」なので、この問題は解決しません。 – klaaspieter

+0

明らかに、これはNSLog(@ "%f"、frame.size.width)に変更した後の問題です。結局のところ、パラメータは「null」ではありませんでした。おかげで – Suprie

+1

@ klaaspieter:あなたは正しいです。 NSStringFromCGRect()は簡単です。しかし、コアの問題は、CGRectがtypedef struct {...}から来ていることです。 NSObjectのサブクラスではありません。だから、 - (NSString *)の記述方法はありません。 NSObjectのインスタンスではないためです。 – AechoLiu

0

私が見ている問題は、CGRectMakeにCGRect *ではなく戻り型CGRectがあることです。このように行: `:

CGRect *rect = CGRectMake(0, 0, tableView.frame.size.width,tableView.rowHeight); 

CGRect rect = CGRectMake(0, 0, tableView.frame.size.width,tableView.rowHeight); 
関連する問題