Реализация боковой панели исходного списка в Swift с разделенным представлением

У меня возникли проблемы с реализацией боковой панели навигации для приложения. Принимая во внимание, что списки источников так заметны в приложениях OS X и что в рекомендациях Apple по человеческому интерфейсу список источников упоминается как идеальный способ навигации в приложении, я удивлен, что нет больше доступных ресурсов (ну, не то, чтобы я мог все равно найдешь). Все, что касается разделенных представлений, которые я могу найти, похоже, относится к ios.

У меня нет проблем с реализацией содержимого исходного списка, моя проблема возникает, когда дело доходит до замены просмотра на основе выбора в исходном списке.

По сути, я хочу, чтобы пользователь выбирал параметр в списке источников на главной стороне разделенного представления, а затем для загрузки соответствующего представления в подробной части разделенного представления. Я не уверен, есть ли простой способ реализовать что-то подобное с помощью раскадровки, как, например, для контроллера вкладок? Если нет, может ли кто-нибудь предложить базовую реализацию в Swift, чтобы помочь мне начать? Я не уверен, с чего начать с точки зрения смены сторон вещей.

Заранее спасибо.

РЕДАКТИРОВАТЬ:

В дополнение к моему предыдущему сообщению я включил ниже базовую реализацию обмена представлениями, но при замене представления предыдущее представление остается. В дополнение к моим вопросам о том, как удалить предыдущее представление перед добавлением нового? Моя строка кода removeFromSuperView(), похоже, вызывает серьезные проблемы!

import Cocoa

класс AppController: NSObject {

@IBOutlet weak var ourView: NSView!
var ourViewController: NSViewController!


let kFirstViewTag = 0
let kSecondViewTag = 1
let kFirstView = "FirstViewController"
let kSecondView = "SecondViewController"



@IBAction func changeView(sender: NSPopUpButton) {
    let tag = sender.selectedTag()
    self.changeViewController(tag)


}

func changeViewController(tag: Int){

    ourViewController.view.removeFromSuperview()


    switch tag{
    case kFirstViewTag:
        self.ourViewController = FirstViewController(nibName: kFirstView, bundle: nil)

    case kSecondViewTag:
        self.ourViewController = SecondViewController(nibName: kSecondView, bundle: nil)

    default: print("There was an error with the view controller change")

    }

    ourView.addSubview(ourViewController.view)

}

override func awakeFromNib() {
    self.changeViewController(kFirstViewTag)
}

}


person user3932488    schedule 25.10.2015    source источник


Ответы (1)


Всем, кто заинтересован в решении проблемы с удалением представления, с которой я столкнулся, я просто заменил представление, удалил из суперпредставления следующий код: self.ourViewController?.view.removeFromSuperview()

Проблема, с которой я столкнулся, была связана с тем, что контроллер представления был необязательным значением. Небольшая оплошность с моей стороны.

Затем исходный список боковой панели можно адаптировать, используя свойство изменения выбора исходного списка, чтобы инициировать изменение представления.

Я опубликую полное решение после завершения, если кому-то интересно.

person user3932488    schedule 27.10.2015
comment
Мне это интересно :) - person Roee84; 12.09.2016
comment
я тоже. Я путаюсь прямо сейчас. Спасибо. Или PM также приветствуется, если это возможно. - person Lord iPhonius; 11.05.2017