У меня возникли проблемы с реализацией боковой панели навигации для приложения. Принимая во внимание, что списки источников так заметны в приложениях 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)
}
}