2016-01-31 5 views
2

Я пытаюсь добавить панель навигации в JSQMessagesViewController. Возможно ли это сделать в конструкторе интерфейса или мне нужно создать навигационную панель программно?JSQMessagesViewController с панелью навигации

При попытке сделать это с помощью IB, панель навигации не отображается во время выполнения, а сообщения прокручиваются до верхней части экрана iPhone. Я бы подумал, что для этого нужно добавить ограничения. Я не уверен, как или что добавить ограничения, поскольку в IB нет ничего, кроме моей навигационной панели.

Извините, если это основной вопрос, спасибо за любые рекомендации, которые вы можете предоставить!

ОБНОВЛЕНИЕ: Мне все еще интересно, если это можно сделать через IB. Однако я понял, как это сделать программно. Я добавил следующее для просмотраDidLoad()

// 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) 

Это, похоже, выполняется. Дайте мне знать, если есть лучший способ сделать это.

+0

до сих пор показывают сообщение пузырь под нав –

ответ

0

Вы можете сделать это с помощью конструктора интерфейса. Все, что вам нужно сделать, это добавить навигатор из библиотеки объектов в правом нижнем углу экрана (в том же месте вы получите кнопку и метки диспетчера). После того, как вы разместили его на своем раскадровке, выберите его, а затем перейдите к инспектору свойств и убедитесь, что панель «Видимость» ✅ «Отображает панель навигации».

Navigation bar Visibility screen shot

Затем вы должны сделать контроллер представления, который является подклассом JSQMessagesViewController начало моего файла выглядит в быстрой

import JSQMessagesViewController 

class SMSConversationViewController: JSQMessagesViewController { 

Это делает его таким образом, это представление может иметь все свойства JSQMessagesViewController, но я могу настроить его для моего приложения.

Тогда просто убедитесь, что эти параметры выбираются в атрибутах Инспектор

Attributes Inspector options Screen Shot

Это будет держать ваши сообщения под навигации. Надеюсь, это было полезно.

+0

не помог мне –

+0

меня тоже. Это не могло решить этого. :( –

0

Мне нелегко было получить обратную кнопку (автоматически) с помощью navigationController в UIStoryboard. Под этим я подразумеваю, что вы переходите к классу JSQMessagesViewController, который встроен в UINavigationController, а BackButton появится на навигационной панели сверху. Я все еще не уверен, как это сделать, любая помощь приветствуется.

Между тем, Наконец-то его запустили, вручную добавив кнопку в раскадровки и отклонив viewController.

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

} 
1

Я потратил несколько часов, чтобы найти удовлетворительное решение. Я сделал, чтобы добавить панель навигации с помощью Main.storyboard. Adding a navigation bar to JSQMessagesViewController

В папке Resources, которая находится внутри в папке JSQMessageViewController вы найдете .xib файл с именем JSQMessagesViewController. Вы можете настроить пользовательский интерфейс так, как хотите. Добавьте к нему навигационную панель.

После этого вы должны определить IBAction-метод в JSQMessagesViewController.h. Например, что-то вроде:

-(IBAction)back; 

Используйте файл JSQMessagesViewController.m, чтобы заполнить тело метода:

-(IBAction)back { 

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

Последний шаг, чтобы соединить IBAction -метода с раскадровки.

Информация: Когда вы добавляете навигационную панель в пользовательский интерфейс, убедитесь, что вы уменьшаете размер коллекции, чтобы пузырьки отображались под панелью навигации.

С наилучшими пожеланиями, Назар

Смежные вопросы