1

iOS 6 で奇妙な動作が見つかりました。他のバージョンではテストしていません。ビューを使用して、単純なナビゲーション ベースのアプリケーションを作成しました。最初のビューのボタンをクリックすると、2 番目のビューがプッシュされます。次に戻るボタンをクリックすると、最初のビューに戻ります。どちらのビューも DetailViewConotrller からネストされています。

@implementation DetailViewController


- (void)viewDidLoad
{
    [super viewDidLoad];

    UIBarButtonItem *searchCancelButton = [[UIBarButtonItem alloc] initWithTitle:@"custom1" style:UIBarButtonItemStyleBordered target:self action:nil];
    [searchCancelButton setBackgroundVerticalPositionAdjustment:3 forBarMetrics:UIBarMetricsDefault];
    UIBarButtonItem *searchCancelButton1 = [[UIBarButtonItem alloc] initWithTitle:@"custom2" style:UIBarButtonItemStyleBordered target:self action:nil];
    [searchCancelButton1 setBackgroundVerticalPositionAdjustment:3 forBarMetrics:UIBarMetricsDefault];
    [self.navigationItem setRightBarButtonItems: [[NSArray alloc] initWithObjects:searchCancelButton, searchCancelButton1, nil] animated:NO];
}


@end

アニメーション パラメータ NO を指定してメソッドを呼び出し[self.navigationItem setRightButtonItems: animated:]ましたが、ボタンはまだアニメーションしています。興味深いのは、このメソッドが 1 つの UIBarButtonItem だけで呼び出された場合、正しく動作し、アニメーションが表示されないことです。

このメソッドがそのように動作する理由は何ですか? これはバグですか、それとも何か問題がありますか? または、ナビゲーション アイテムのアニメーションを回避する方法について提案があります。

4

1 に答える 1

0

コードを次のように変更するだけです。

- (void)viewDidLoad
{
 [super viewDidLoad];

  UIBarButtonItem *searchCancelButton = [[UIBarButtonItem alloc] initWithTitle:@"custom1" style:UIBarButtonItemStyleBordered target:self action:nil];
  [searchCancelButton setBackgroundVerticalPositionAdjustment:3 forBarMetrics:UIBarMetricsDefault];
  UIBarButtonItem *searchCancelButton1 = [[UIBarButtonItem alloc] initWithTitle:@"custom2" style:UIBarButtonItemStyleBordered target:self action:nil];
  [searchCancelButton1 setBackgroundVerticalPositionAdjustment:3 forBarMetrics:UIBarMetricsDefault];
  [self.navigationItem setRightBarButtonItems: [[NSArray alloc] initWithObjects:searchCancelButton, searchCancelButton1, nil] animated:NO];

}

現在の実装では、ナビゲーション ボタンを 2 回設定しています。最初にプロパティを使用し、次にメソッドを呼び出します。おそらく、rightBarButtonItems を設定すると、アニメーション付きの setRightBarButtonItems として機能します。

于 2013-07-25T10:06:13.733 に答える