我有一个SourceList(NSOutlineView),我想显示某些项目的上下文菜单。环顾四周,我在Cocoa和Obj-C找到了答案,但我想在MonoMac和C#中做到这一点。
在我看来,我需要做自己的自定义类,它继承自NSOutlineView并实现MenuForEvent方法。但是当我尝试用我自己的自定义类替换旧的标准NSOutlineView时,在运行时没有显示任何内容。在我的控制器中,我调用View.ReplaceSubviewWith(oldTree,newTree)。
我还需要做点什么吗?或许还有另一种方法可以实现这一目标?
答案 0 :(得分:1)
您应该能够以声明方式进行交换,而不是尝试像这样交换实例。
确保“注册”自定义大纲视图,例如:
[Register("MySourceList")]
private class MySourceList : NSOutlineView
{
// Need this constructor for items created in .xib
public MySourceList(IntPtr handle) : base(handle)
{ }
然后,在Xcode设计器中,选择大纲视图并指定您注册为该对象的自定义类的名称:
这样,当您从nib创建视图时,运行时将首先创建大纲视图的正确实例。