web-dev-qa-db-ja.com

barButtonItemの表示/非表示

UIBarButtonItemを表示/非表示にしようとしています。 barButtonの右側にstoryboardを追加しました。次に、viewDidLoadで、rightBarButtonItemnilにしました。後で、buttonに追加したstoryboardに設定しました。ここに私のコードがあります:

// Right barButtonItem added in storybord:
@IBOutlet weak var deleteBarButton: UIBarButtonItem! 

// viewDidLoad
self.navigationItem.rightBarButtonItem = nil

// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton

self.deleteBarButtonrightBarButtonItemに設定しても、何も起こりません。表示されません。私は何を間違えていますか?barButtonItemを表示/非表示にする正しい/最も効率的な方法は何ですか?

更新

私は次を試しました:

self.deleteBarButton.hidden = true

しかし、次のエラーが表示されます。

UIBarButtonItemには 'hidden'という名前のメンバーがありません

39
Jessica

答えが得られました!あなたがしなければならないのは、strong IBOutlet、次のことができます。

// viewDidLoad
self.navigationItem.rightBarButtonItem = nil

// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton
75
Jessica

更新2

ボタンのテキストを何も設定しないでください:

self.deleteBarButton.title = "";

更新1

enabledプロパティを使用して、次のようにボタンを照らします(ボタンを完全に非表示にするわけではありませんが、アクションを実行しないことをユーザーに知らせることができます)。

これは変数として機能し、ボタンがケースに隠れていることを知らせます:

点灯:(ViewDidLoadに配置)

self.deleteBarButton.enabled = true;

暗く:(後で配置)

self.deleteBarButton.enabled = false;

それから、以下を追加して完全に消えます:

self.navigationController?.navigationItem.rightBarButtonItem?.tintColor = UIColor.clearColor();
25
Jake Chasan

ViewDidLoadでbarButtonを手動で作成してから、ボタンを表示/非表示にしてみてください。

コード:

var barButton: UIBarButtonItem!

func viewDidLoad() {
    super.viewDidLoad()
    barButton = UIBarButtonItem(title: "Title", style: .Plain, target: self, action: Selector("target_function"))
    self.navigationItem.rightBarButtonItem = barButton
}

func someFunction() {
    self.navigationItem.rightBarButtonItem = nil
    // or
    self.navigationItem.rightBarButtonItem = barButton
}
6
mkz

これは私に最適です!!

self.navBar.title = ""
self.navBar.enabled = false
0
alitosuner