3

UINavigationControllerがあり、ViewControllerの1つでツールバーを使用しています。私はいくつかのUIBarButtonItemsを持っています。さまざまな時点で、。などを使用して、ツールバーの特定のボタンを無効にします_btnEdit.enabled = NO

これは、ユーザーの操作がないときにこれが発生する1回を除いて、すべてうまく機能します。その場合、ボタンは有効になっているように見えますが(グレー表示されていません)、タッチは受け入れられません。バーを何か(下からアクションシート)で覆ったり、デバイスの向きを変えたりすると、正しく表示されます。

私は試しましたが、どちらも効果がありませんself.navigationController.toolbar setNeedsDisplay][self.navigationController.toolbar drawRect:self.navigationController.toolbar.bounds]

このビューを「更新」する方法について何かアイデアはありますか?UIBarButtonItemsがUIViewを継承していないことはわかっていますが、これが問題の原因になっている可能性があります。

4

1 に答える 1

3

これは意図された動作です。setNeedsDisplayは優れた反射神経の試みですが、ナビゲーションバーとを所有していないUIBarButtonItem doesn't inherit from UIViewため、少し異なる考え方をする必要があります。
ここにあなたがあなたの目標を達成する方法があります:

UIBarButtonItem *bbi = self.navigationItem.rightBarButtonItem;
bbi.enabled = NO;
[self.navigationItem setRightBarButtonItem:bbi animated:YES];

注: これで簡単なテストを行ったところですが、機能していますselfUIViewController

于 2012-12-08T03:27:42.963 に答える