0

ナビゲーションコントローラーによってプッシュおよびポップされたすべての UIViewControllers の下部のツールバーに UILabel を追加したいと思います。

- (void)init
{        
    //Bottom toolbar label
    self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0 , 11.0f, 320, 21.0f)];
    [self.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:14]];
    [self.titleLabel setBackgroundColor:[UIColor clearColor]];
    [self.titleLabel setTextColor:[UIColor whiteColor]];
    [self.titleLabel setText:@"Selected Comics: 0"];
    [self.titleLabel setTextAlignment:UITextAlignmentLeft];

}

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{

    UIBarButtonItem *labelButton = [[UIBarButtonItem alloc] initWithCustomView:self.titleLabel];

    UIBarButtonItem *flex = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil] autorelease];

    [viewController setToolbarItems:[NSArray arrayWithObjects:labelButton, flex, sortButton, nil] animated:animated];

    [labelButton release];
}

ただし、View Controller をプッシュしてポップすると、ラベルが表示され、すぐに消えます。代わりに、もう一方のボタン (sortButton) が表示されたままになります。

ラベルを表示したままにするにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

あなたの問題はこれです:self.titleLabel。

複数の labelButton インスタンスがすべてそのビューを参照しており、ツールバーのアイテムを設定すると (アニメーション == YES だと思います)、titleLabel は予期しないスーパービューから削除されます。

使用ごとに新しい titleLabel を作成すると、問題は解決します。

于 2012-07-30T11:42:09.397 に答える