NSRuleEditor
表示基準を取得しようとしています。単一の基準を指定すると機能します (静的ラベルを作成します) が、複数指定すると、ルール エディターの各行が空白になります (追加/削除ボタン以外のサブビューは追加されません)。これはなぜでしょうか?私のコードは次のとおりです。
struct RuleItem {
var text: String
var children: [RuleItem] = []
}
var ruleItems = [
RuleItem(text: "hello"),
RuleItem(text: "world", children: [
RuleItem(text: "child 1"),
RuleItem(text: "child 2")
])
]
// In class conforming to NSRuleEditorDelegate:
func ruleEditor(_ editor: NSRuleEditor, numberOfChildrenForCriterion criterion: Any?, with rowType: NSRuleEditor.RowType) -> Int {
if let item = criterion as AnyObject as? RuleItem {
return item.children.count
} else {
return ruleItems.count
}
}
func ruleEditor(_ editor: NSRuleEditor, child index: Int, forCriterion criterion: Any?, with rowType: NSRuleEditor.RowType) -> Any {
if let item = criterion as AnyObject as? RuleItem {
return item.children[index]
} else {
return ruleItems[index]
}
}
func ruleEditor(_ editor: NSRuleEditor, displayValueForCriterion criterion: Any, inRow row: Int) -> Any {
(criterion as AnyObject as! RuleItem).text as NSString
}