2

JSQMessagesViewController にナビゲーション バーを追加するのに苦労しています。インターフェイスビルダーでこれを行うことは可能ですか、それともプログラムでナビゲーションバーを作成する必要がありますか?

IB でこれを実行しようとすると、実行時にナビゲーション バーが表示されず、メッセージが iPhone ディスプレイの一番上までスクロールします。これを機能させるには、制約を追加する必要があると思います。IB にはナビゲーション バー以外に何もないため、制約を追加する方法や対象がわかりません。

これが基本的な質問である場合は申し訳ありませんが、提供できるガイダンスに感謝します!

更新: IB を介してこれを行うことができるかどうか、私はまだ興味があります。ただし、これをプログラムで行う方法を見つけました。viewDidLoad() に以下を追加しました

    // Create the navigation bar
    let navigationBar = UINavigationBar(frame: CGRectMake(0, 0, self.view.frame.size.width, 64)) // Offset by 20 pixels vertically to take the status bar into account

    navigationBar.backgroundColor = UIColor.whiteColor()
    navigationBar.delegate = self;

    // Create a navigation item with a title
    let navigationItem = UINavigationItem()
    navigationItem.title = contacts[i].firstName

    // Create left and right button for navigation item
    let leftButton =  UIBarButtonItem(title: "Back", style:   UIBarButtonItemStyle.Plain, target: self, action: "btn_clicked:")
    let rightButton = UIBarButtonItem(title: "Details", style: UIBarButtonItemStyle.Plain, target: self, action: "details_clicked:")

    // Create two buttons for the navigation item
    navigationItem.leftBarButtonItem = leftButton
    navigationItem.rightBarButtonItem = rightButton

    // Assign the navigation item to the navigation bar
    navigationBar.items = [navigationItem]

    // Make the navigation bar a subview of the current view controller
    self.view.addSubview(navigationBar)

これで仕事が捗りそうです。これについてもっと良い方法があれば教えてください。

4

3 に答える 3

1

満足のいく解決策を見つけるのに数時間を費やしました。私がしたことは、Main.storyboard を使用してナビゲーション バーを追加することでした。 JSQMessagesViewController へのナビゲーション バーの追加

フォルダーResources内に配置されているフォルダーJSQMessageViewControllerには、.xib という名前のファイルがありますJSQMessagesViewController。好きなようにUIをカスタマイズできます。ナビゲーション バーを追加します。

その後、 でIBAction-methodを定義する必要がありますJSQMessagesViewController.h。たとえば、次のようなものです。

-(IBAction)back;

ファイルを使用しJSQMessagesViewController.mてメソッド本体を埋めます。

-(IBAction)back {

[self dismissViewControllerAnimated:YES completion:^{
}]; }

最後のステップは、 -IBActionメソッドをストーリーボードに接続することです。

情報: ナビゲーション バーを UI に追加するときは、コレクション ビューのサイズを最小化して、バブルがナビゲーション バーの下に表示されるようにしてください。

敬具、ナザール

于 2016-12-18T14:09:36.003 に答える
0

UIStoryboardでnavigationControllerを使用して戻るボタンを(自動的に)取得するのに苦労しました。つまり、UINavigationController に埋め込まれている JSQMessagesViewController クラスにセグエすると、BackButton が上部の NavigationBar に表示されます。この方法でそれを行う方法はまだわかりません。助けていただければ幸いです。

一方、最終的に Storyboard にボタンを手動で追加し、viewController を閉じることで機能するようになりました。

@IBAction func navBackButton(sender: UIBarButtonItem) {
    dismissViewControllerAnimated(true, completion: nil)

}
于 2016-02-25T20:56:38.840 に答える