我在尝试为应用实现导航侧边栏时遇到问题。考虑到源列表在OS X应用程序中如此突出,并且Apple的人机界面指南将源列表称为在应用程序中导航的理想方式,我很惊讶没有更多可用资源(我不能无论如何都找。我能找到的与拆分视图相关的所有内容似乎都是指ios。
我对实现源列表的内容没有任何问题,在基于源列表中的选择进行视图交换时出现了我的问题。
本质上,我希望用户在拆分视图的主端的源列表中选择一个选项,然后在拆分视图的详细信息侧加载相应的视图。我不确定是否有一种简单的方法可以使用故事板来实现这样的事情,例如tabview控制器?如果没有,是否有人能够在swift中建议一个基本的实现来帮助我开始?我不知道从视图交换方面开始从哪里开始。
提前致谢。
编辑:
继我之前的帖子之后,我在下面列出了视图交换的基本实现,但是当替换视图时,前一个视图仍然存在。除了我的问题,如何在添加新视图之前删除以前的视图?我的代码行removeFromSuperView()似乎导致了重大问题!
import Cocoa
class 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)
}
}
答案 0 :(得分:0)
如果有人对我遇到的删除视图问题的解决方案感兴趣,我只需更换视图,使用以下代码从superview中删除:self.ourViewController?.view.removeFromSuperview()
我遇到的问题是由于视图控制器是可选值。我的疏忽。
然后,可以使用源列表的选择更改属性来调整侧栏源列表,以触发视图更改。
如果有人有兴趣,我会在完成后发布完整的解决方案。