sam*_*sam 4 macos cocoa appkit nssplitview nssplitviewcontroller
我想使用自定义NSSplitView与我NSSplitViewController。
该文件说:
要提供自定义的拆分视图,请在继承的viewDidLoad()方法中调用super之前随时设置此属性。也就是说,在拆分视图控制器的isViewLoaded属性为true之前。
我的NSSplitViewController子类称为MainVC。
我尝试-viewDidLoad在调用之前设置我的自定义拆分视图[super viewDidLoad]:
- (void)viewDidLoad {
self.splitView = [MySplitView new];
[super viewDidLoad];
// Rest of viewDidLoad...
}
Run Code Online (Sandbox Code Playgroud)
但这没用。我收到以下错误:
2017-09-02 10:35:43.527312-0700 Zee [6497:632581] ** *-[MainVC setSplitView:],/ BuildRoot / Library / Caches / com.apple.xbs / Sources / AppKit / AppKit-中的声明失败1561 / Controllers / NSSplitViewController.m:220
2017-09-02 10:35:43.527558-0700 Zee [6497:632581] MainVC:-splitView只能在加载视图之前分配
我也尝试覆盖loadView:
- (void)loadView {
self.splitView = [MySplitView new];
[super loadView];
}
Run Code Online (Sandbox Code Playgroud)
但是我得到:
2017-09-02 10:39:39.377345-0700 Zee [6575:639146] ** *-[__ NSArrayM objectAtIndex:]:索引0超出了空数组的范围
如果我在打电话后做了作业[super loadView],我会得到和我尝试时一样的错误-viewDidLoad。
如何NSSplitView在NSSplitViewController子类中使用自定义?
从技术上讲,此线程中可接受的答案是正确的,但是(可以理解)错过了一个错误,NSSplitViewController因为我没有在任何地方找到文档。我想这就是2017年可可的发展状态...
无论如何,这个问题是这样的:如果你和我一样,想用一NSSplitViewController用NSSplitView即开始只用一个视图,上面将无法正常工作,你会从OP获得索引错误的子类的方法。有一个私有方法(用于绘制分隔线),该方法NSSplitViewItem始终假设两个值都在其中,即使NSSplitView只使用一个也可以。
我最终要做的是将NSSplitViewController和都子类化NSSplitView,并检查是否创建了仅具有一个视图的视图,并交换了一个空白NSViewController实例,该实例将在加载阶段确定下来后被删除。我还发现splitViewController.splitViewItems = ...直接设置不能很好地工作,因此您应该打电话addSplitViewItem:进行操作-大概是幕后有些东西,否则您会错过这些东西。
令人讨厌的是,该类没有文档记录,即使它在整体上非常有用。如果您是一个任性的旅行者,并且发现了这一点,希望对您有所帮助。
| 归档时间: |
|
| 查看次数: |
643 次 |
| 最近记录: |