2010-12-01 7 views
0

4.2 iphone sdkをインストールしました。私のプロジェクト(4.0で書かれています)を4.2で実行しました。私は、ツールバーのアイテムがツールバー上に置き忘れられていることに気づきました。どちらもipad、iphoneシミュレーターにあります。これ以外に遭遇した人は他にいますか? 、見てのとおりiphone sdk 4.2:UIBoolButtonItemがUIToolbar上に配置されていません

output http://dl.dropbox.com/u/13741164/toolbar.jpg

ボタンが右サイドでフレームの外にある詳細:ここ

@define TOOLBAR_HEIGHT 34 
@define TOOLBAR_ITEM_WIDTH 90 

// extends UIView 
@implementation MapViewControllerContainer 
- (void) setFrame:(CGRect)frame 
{ 
    [super setFrame:frame]; 
    if (self.subviews.count == 2) 
    { 
     ((UIView *)[self.subviews objectAtIndex:0]).frame = CGRectMake(0, 0, frame.size.width, TOOLBAR_HEIGHT); 
     ((UIView *)[self.subviews objectAtIndex:1]).frame = CGRectMake(0, TOOLBAR_HEIGHT, frame.size.width, 
                     frame.size.height - TOOLBAR_HEIGHT); 
    } 
} 
@end 

// extends UIViewController 
@implementation MapViewController 
- (void) loadView 
{ 
    self.view = [[MapViewControllerContainer alloc] init]; 
    [self.view release]; 

    UIToolbar * toolbar = [[UIToolbar alloc] init]; 
    toolbar.barStyle = UIBarStyleBlack; 

    UIBarButtonItem * flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 
                        target:nil action:nil]; 
    detailsButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Details",@"") 
                style:UIBarButtonItemStyleBordered target:self 
                action:@selector(detailsPressed)]; 
    detailsButton.width = TOOLBAR_ITEM_WIDTH; 
    detailsButton.enabled = NO; 
    toolbar.items = [NSArray arrayWithObjects: flexibleItem, detailsButton, nil]; 
    [flexibleItem release]; 
    [detailsButton release]; 

    [self.view addSubview:toolbar]; 
    [toolbar release]; 

    // More non-related code here 
} 
@end 

その出力されます。ここでは、コードです。 TOOLBAR_​​ITEM_WIDTHが小さければ小さいほど、フレームの内側に多くなります。だから、私はツールバーのアイテムの計算にバグがあると思うのですが、それは4.0 sdkでうまくいきます。ご協力いただきありがとうございます。

+0

私は解決策を見つけました。 4.2では、-setFrameが後で呼び出されても、uitoolbarを-initで初期化するべきではありません.initWithFrameは、すべてのボタンを格納するのに十分な大きさのダミーフレームとともに使用する必要があります。 –

答えて

2

次の呼び出しは私のために問題を修正しました:

[toolbar sizeToFit]; 
関連する問題