1

ナビゲーションバーを動的に追加しようとしていますが、少し奇妙なことが起こっています。

私の画面は、UINavigationと赤い背景のビューです。

ここに画像の説明を入力

そして、これは私のSwiftコードです:

import UIKit

class ViewController: UIViewController {

    @IBOutlet var navBar: UINavigationBar!

    @IBOutlet var viewLongPress: UIView!

    var viewLongPressInitialPosition: CGPoint!

    var frameSize: CGSize {
        get {
            return self.view.frame.size
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        navBar.frame.size.height = 64.0

        viewLongPress.addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: "viewLongPressAction:"))

        viewLongPressInitialPosition = viewLongPress.frame.origin
    }

    func viewLongPressAction(sender: UILongPressGestureRecognizer) {

        let locationInView = sender.locationInView(self.view)

        if sender.state == .Began {

        } else if sender.state == .Changed {

            viewLongPress.frame.origin = CGPoint(x: locationInView.x - (viewLongPress.frame.width / 2), y: locationInView.y - (viewLongPress.frame.height / 2))

        } else if sender.state == .Ended {

            if locationInView.y <= navBar.frame.height {

                let item = UINavigationItem()
                item.rightBarButtonItems = [UIBarButtonItem(title: "Test", style: .Plain, target: nil, action: "noAction:")]

                navBar.items?.append(item)

            }

            viewLongPress.frame.origin = viewLongPressInitialPosition
        }
    }

    func noAction(sender: AnyObject) {

    }
}

UINavigationItemを追加して、ナビゲーション バーの上にビューをドラッグしようとしています。

しかし、ボタンを追加すると、ナビゲーション バーは次のようになります。

ここに画像の説明を入力

ボタンが追加され、次のようになります。

ここに画像の説明を入力

何かが足りないと思いますが、解決できません。


2 つ目のボタン (leftBar) を追加しようとしましたが、タイトルが表示されなくなりました。

既にボタンがある場合、もう 1 つボタンを追加するにはどうすればよいですか?


誰かが私を助けることができますか?

答えてくれてありがとう。

4

1 に答える 1

2

あなたUINavigationItemはおそらくあなたが望むものではないあなたの全体を置き換えています。self.navigationItem.rightBarButtonItem = ...代わりに試してください。実際のナビゲーション バーを操作する必要はなく、現在のビュー コントローラーのナビゲーション アイテム (タイトルも含まれます) だけを操作する必要があります。

編集: navBar には既にナビゲーション項目があるようです。代わりにこの割り当てを行うとどうなりますか:self.navBar.items.first?.rightBarButtonItem = ...

于 2016-02-10T05:41:41.607 に答える